0

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

我可以在 ToolTipOpening 事件处理程序中做些什么来隐藏它吗?或者也许是一种简单的方法来了解鼠标指针何时停留在形状上一段时间(以便以编程方式显示工具提示)?

4

2 回答 2

1

好的。我想我明白了。我使用 ToolTip 对象来设置每个形状的 ToolTip 属性(而不是使用字符串),然后我可以编写:

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

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

于 2012-10-20T14:35:56.347 回答
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;
    }
}
于 2017-09-25T12:49:21.103 回答