WPF: изменить текст меню в контекстном меню - PullRequest
1 голос
/ 15 января 2010

У меня есть ContextMenu в XAML со следующим MenuItem:

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

Я бы хотел изменить Header из MenuItem, изменив каким-либо образом Text из RoutedCommand. И я хотел бы сделать это в CanExecuteRoutedEventHanlder. Если я просто изменю RoutedCommand Text, MenuItem s не будут обновлены, я предполагаю, что это потому, что меню уже создано при запуске CanExecuteRoutedEventHanlder.

Мне нужен метод принудительного обновления с Command до MenuItem.

1 Ответ

1 голос
/ 17 января 2010

Создайте собственную команду:

 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 свяжите заголовок со свойством Text в MyCommandClass.

...