我正在使用 DataTemplates 来呈现 ItemsControl 中的项目。我想为每个项目显示一个工具提示。如果我使用 ToolTip="{Binding MyToolTip,Mode=OneWay}"之类的绑定(bind),WPF 在开始时会获取一次工具提示,并且在打开时不会更新工具提示。
我的项目实现了 INotifyPropertyChanged,所以原则上我可以为 MyToolTip 生成更改通知。问题是,工具提示是根据底层模型中的许多信息生成的。这些信息经常更改,为 MyToolTip 属性生成更改通知既麻烦又低效。此外,我不希望最初生成所有项目的工具提示。相反,我想在打开工具提示时强制生成新的工具提示。我该怎么做?
最佳答案
您将不得不使用一点代码隐藏,但这还不错。
<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();
}
关于WPF 数据模板 : How to create a tooltip just-in-time?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/967217/