2016-07-26 42 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