2010-01-15 145 views
1

上我在XAML ContextMenu具有以下MenuItemWPF:更改菜單項的文本上下文菜單

<MenuItem Command="local:MyClass.MyCommand" "/> 

我想通過某種方式改變RoutedCommandText改變MenuItemHeader。我想在CanExecuteRoutedEventHanlder這樣做。如果我只更改RoutedCommandTextMenuItem不會更新,我假設這是因爲在運行CanExecuteRoutedEventHanlder時已經創建了菜單。

基本上我需要一種方法來強制更新從CommandMenuItem.

回答

1

使自己的命令:

public class MyCommandClass : ICommand, INotifyPropertyChanged 
{ 
    public string Text { get; set; } 

    public MyCommandClass(string text) 
    { 
     this.Text = text; 
    } 

    public bool CanExecute(object parameter) 
    { 
     this.Text = "changed the text"; 
     PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Text")); 
     return true; 
    } 

    public event EventHandler CanExecuteChanged; 

    public void Execute(object parameter) 
    { 

    } 

    public event PropertyChangedEventHandler PropertyChanged; 
} 

然後在XAML綁定標題到MyCommandClass的Text屬性。