WPF:在上下文菜单中更改menuitem的文本

时间:2010-01-15 12:48:07

标签: wpf contextmenu menuitem routed-commands

我在XAML中ContextMenu使用以下MenuItem

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

我想通过某种方式更改Header的{​​{1}}来更改MenuItem的{​​{1}}。我想在Text中做到这一点。如果我只是更改了RoutedCommand CanExecuteRoutedEventHanlderRoutedCommand没有更新,我认为这是因为在Text运行时已经创建了菜单。

基本上我需要一种强制从MenuItem更新到CanExecuteRoutedEventHanlder

的方法

1 个答案:

答案 0 :(得分: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中将Header绑定到MyCommandClass的Text属性。