2016-07-26 41 views
2

我使用螺旋显示简单对象的鼠标悬停时提示遵循显示在3D物体

<h:HelixViewport3D > 
    <h:DefaultLights/> 
    <h:Teapot/> 
</h:HelixViewport3D> 

如何显示在茶壶鼠标悬停工具提示?

感谢

回答

2

我会用这样的:

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中的工具提示,如果你想。

+0

有趣的是,我认为它应该更简单,因为它是如此简单的任务。感谢您的解决方案,将尝试它:) – HuyNA

+0

如果你找到一个更简单的方法,让我们知道这里。 – wkl