2
我使用螺旋顯示簡單對象的鼠標懸停時提示遵循顯示在3D物體
<h:HelixViewport3D >
<h:DefaultLights/>
<h:Teapot/>
</h:HelixViewport3D>
如何顯示在茶壺鼠標懸停工具提示?
感謝
我使用螺旋顯示簡單對象的鼠標懸停時提示遵循顯示在3D物體
<h:HelixViewport3D >
<h:DefaultLights/>
<h:Teapot/>
</h:HelixViewport3D>
如何顯示在茶壺鼠標懸停工具提示?
感謝
我會用這樣的:
class ToolTipHelper
{
private readonly ToolTip _toolTip;
private readonly Timer _timer;
/// <summary>
/// Creates an instance
/// </summary>
public ToolTipHelper()
{
_toolTip = new ToolTip();
_timer = new Timer { AutoReset = false};
_timer.Elapsed += ShowToolTip;
}
/// <summary>
/// Gets or sets the text for the tooltip.
/// </summary>
public object ToolTipContent { get{ return _toolTip.Content; } set{ _toolTip.Content = value; } }
/// <summary>
/// To be called when the mouse enters the ui area.
/// </summary>
public void OnMouseEnter(object sender, MouseEventArgs e)
{
_timer.Interval = ToolTipService.GetInitialShowDelay(Application.Current.MainWindow);
_timer.Start();
}
private void ShowToolTip(object sender, ElapsedEventArgs e)
{
_timer.Stop();
if (_toolTip != null)
_toolTip.Dispatcher.Invoke(new Action(() => { _toolTip.IsOpen = true; }));
}
/// <summary>
/// To be called when the mouse leaves the ui area.
/// </summary>
public void OnMouseLeave(object sender, MouseEventArgs e)
{
_timer.Stop();
if (_toolTip != null)
_toolTip.IsOpen = false;
}
然後修改Teapot
這樣的:
class Teapot
{
private readonly _tooltipHelper = new ToolTipHelper{ ToolTipContent = "MyToolTip" }; // keep the ToolTipHelper during the life of your Teapot but replace the Content whenever you want
private ModelUIElement3D _uiModel; // this has to be created and have its Model set to the suitable GeometryModel3D. You may want to replace an existing ModelVisual3D by this.
public Teapot(/*...*/)
{
_uiModel.MouseEnter += tooltipHelper.OnMouseEnter;
_uiModel.MouseLeave += tooltipHelper.OnMouseLeave;
//...
}
// ...
}
它不應該是難以修改這個定義的內容Xaml中的工具提示,如果你想。
有趣的是,我認爲它應該更簡單,因爲它是如此簡單的任務。感謝您的解決方案,將嘗試它:) – HuyNA
如果你找到一個更簡單的方法,讓我們知道這裏。 – wkl