2017-05-08 143 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