WPF DataTemplate:如何及时创建工具提示?

Qwe*_*tie 4 wpf tooltip datatemplate itemscontrol

我正在使用DataTemplates在ItemsControl中呈现项目。我想显示每个项目的工具提示。如果我使用诸如ToolTip =“ {Binding MyToolTip,Mode = OneWay}”之类的绑定,则WPF会在开始时获取一次工具提示,并且在打开时不会更新工具提示。

我的项目实现了INotifyPropertyChanged,因此原则上我可以为MyToolTip生成更改通知。问题是,工具提示是基于基础模型中的许多信息生成的。这些信息经常更改,并且为MyToolTip属性生成更改通知既麻烦又效率低下。此外,我不希望最初产生所有项目的工具提示。相反,我想强制在打开工具提示时生成一个新的工具提示。我该怎么做?

Bry*_*hle 5

您将不得不使用一些隐藏的代码,但这还不错。

<object ToolTip="{Binding MyToolTip, Mode=OneWay}" ToolTipOpening="MyToolTip_Opening" />
Run Code Online (Sandbox Code Playgroud)

在代码背后

private void MyToolTip_Opening(object sender, ToolTipEventArgs e)
{
    DependencyObject depObj = sender as DependencyObject;
    if (depObj == null) return;
    BindingExpression be = BindingOperations.GetBindingExpression(depObj, FrameworkElement.ToolTipProperty);
    if (be != null) be.UpdateTarget();
}
Run Code Online (Sandbox Code Playgroud)