作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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/
我是一名优秀的程序员,十分优秀!