以编程方式设置ToolTip持续时间的麻烦

时间:2011-07-06 18:34:31

标签: c# wpf tooltip

我遇到了一个问题,我需要创建一个工具提示对象,并在用户将鼠标悬停在我的应用程序的特定区域时显示它。

我可以让工具提示显示得很好。问题是我需要它几秒钟过后才能搞砸。我知道ToolTipService.SetShowDuration并且我尝试过使用它,但我没有遇到太多运气。

这是我在MouseMove事件处理程序中得到的内容:

_toolTip.Placement = PlacementMode.Relative;
_toolTip.Horizontal = e.X;
_toolTip.VerticalOffset = e.Y;
_toolTip.Content = stuffs;
_toolTip.IsOpen = true;

我尝试过设置以下内容:

someObject.ToolTip = _toolTip;
ToolTipService.SetShowDuration(someObject, 5);

最后两行没有任何变化。工具提示仍然可见并保持可见。我使用的服务有误吗?任何想法都会非常感激!

2 个答案:

答案 0 :(得分:0)

试试这个。

 <Border Name="border" ToolTip="some message" MouseEnter="border_MouseEnter" Background="red" Margin="50"/>

  ToolTip tool = new ToolTip();
        private void border_MouseEnter(object sender, MouseEventArgs e)
        {
        tool.Placement = PlacementMode.Relative;
        tool.HorizontalOffset = 100; 
        tool.VerticalOffset = 200;
        tool.Content = "stuffs";
        tool.IsOpen = true;
        border.ToolTip = tool;
        ToolTipService.SetShowDuration(border, 5000);
        }

答案 1 :(得分:0)

我为这个问题制定了一个解决方法。

为了给出更多背景知识,我在WindowsFormsHost对象中有一个飞机的3D模型。当用户将鼠标悬停在已识别的部分上时,我需要一个工具提示才能显示。

我创建了一个工具提示实例,在我的MouseMove事件中,我做了类似这样的事情:

// selectedPart will be null if no part is selected
if(selectedPart != null && prevSelectedPart != selectedPart)
{
    toolTip.IsOpen = false;
    host.ToolTip = toolTip;
    toolTip.IsOpen = true;
}
else if (prevSelectedPart == selectedPart  && prevSelectedPart != null)
{
    toolTip.IsOpen = true;
}
else
    toolTip.IsOpen = false;

这对我有用。