2012-10-20 126 views
0

我有一个有很多形状的画布,我希望他们每个人都显示一个字符串工具提示。为了节省一些内存,我想在工具提示打开时设置工具提示值,所以我将工具提示设置为最初每个形状上的空字符串,然后在它变为可见之前设置它的实际值(在工具提示开启事件处理程序是)。但是,有时在ToolTipOpening事件处理程序中设置的ToolTip是一个空字符串,我不希望ToolTip在这些情况下显示。我可以防止从ToolTipOpening事件处理程序中显示WPF ToolTip吗?

有什么我可以从ToolTipOpening事件处理程序中做的事情来隐藏它吗?或者,也许一个简单的方法来知道什么时候鼠标指针停留一段时间(为了以编程方式显示工具提示)?

回答

1

好的。我想我明白了。我已经使用的工具提示对象设置每个形状的工具提示特性(而不是使用字符串),然后我可以这样写:

(shape.ToolTip as ToolTip).Visibility = Visibility.Hidden; 

似乎到目前为止的工作...

1

我处理有同样的问题。 最好的解决方案是将ToolTipEventArgs事件数据标记为已处理。 这将防止工具提示出现。

来源:https://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.tooltipopening(v=vs.110).aspx

public void CellToolTipOpening(object sender, ToolTipEventArgs args) 
{ 
    var cell = args.Source as CellValuePresenter; 
    if (cell == null) 
     return; 

    ... 

    if (!string.IsNullOrWhiteSpace(ViewModel.Tooltip)) 
    { 
     ToolTipService.SetToolTip(cell, ViewModel.Tooltip); 
    } 
    else 
    { 
     args.Handled = true; 
    } 
} 
相关问题