4

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

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

4

1 回答 1

5

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

<object ToolTip="{Binding MyToolTip, Mode=OneWay}" ToolTipOpening="MyToolTip_Opening" />

在代码隐藏中

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();
}
于 2009-06-08T22:39:43.120 回答