我使用的DataTemplates来呈现一个ItemsControl项目。我想说明每个项目的工具提示。如果我使用的结合,如工具提示=“{结合MyToolTip,模式=单向}”,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();
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top