2017-05-08 357 views
1

結合我得到了以下菜單項動態的菜單項

<MenuItem 
    Header="{Binding ChangeSetCache.History"> 
    <MenuItem.ToolTip> 
     <TextBlock 
      Text="{Binding ChangeSetCache.History}" /> 
    </MenuItem.ToolTip> 
</MenuItem> 

ChangeSetCache級看起來是這樣的:

public class ChangeSetCache : BaseModel 
{ 
    private ObservableCollection<ChangeSetModel> cache { get; set; } = new ObservableCollection<ChangeSetModel>(); 

    public string History 
    { 
     get { return cache.Count.ToString(); } 
     set { } 
    } 
} 

(INotifyPropertyChanged的是在basemodel實現)

爲什麼該工具提示更新綁定和menuitem標題不?如何根據需要更新menuitem標題?

如果我設計了菜單項,工具提示類似下面的提示還沒有更新:

<MenuItem 
    Header="{Binding ChangeSetCache.History}" 
    ToolTip="{Binding ChangeSetCache.History}" /> 
+2

作爲一個說明,設置'UpdateSourceTrigger = PropertyChanged'在這裏毫無意義。它只在TwoWay或OneWayToSource綁定中有效。這就是說,你的財產的制定者是空的。你如何期待一個PropertyChanged事件被解僱? – Clemens

+0

謝謝你的提示。當然,我只需要單向綁定,不需要更新視圖中的源代碼。我會更新我的問題。 – Chpo7234

+0

您何時通知或致電OnPropertyChanged(「歷史」)?如果您不打電話,UI將不知道該物業的新價值。 – XAMlMAX

回答

0
<MenuItem.Header> 
    <TextBlock 
     Text="{Binding ChangeSetCache.History, 
     UpdateSourceTrigger=PropertyChanged}" /> 
</MenuItem.Header> 

這應該解決您的問題

+0

謝謝你的幫助。我已經嘗試過了,但令人驚訝的是它不起作用...... – Chpo7234