2009-06-08 35 views
3

我正在使用DataTemplates呈現ItemsControl中的項目。我想爲每個項目顯示一個工具提示。如果我使用ToolTip =「{Binding MyToolTip,Mode = OneWay}」這樣的綁定,WPF會在開始時獲取一次工具提示,並在打開時不更新工具提示。WPF DataTemplate:如何創建工具提示實時?

我的項目實現INotifyPropertyChanged,所以原則上我可以爲MyToolTip生成更改通知。問題是,工具提示是基於底層模型中的許多信息生成的。這些信息經常變化,爲MyToolTip屬性生成更改通知既麻煩又低效。另外,我不希望最初生成所有項目的工具提示。相反,我想強制在工具提示打開時生成新的工具提示。我該怎麼做?

回答

4

你將不得不使用一點代碼隱藏,但它並沒有那麼糟糕。

<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(); 
} 
+0

我假設你的地方呼籲BindingExpression更新之前,你會被更新的工具提示文本? – micahtan 2009-06-09 00:57:23