2010-01-15 6 views
1

Je ContextMenu en XAML avec les éléments suivants MenuItem:WPF: Modifier le texte de menuitem dans le menu contextuel

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

Je voudrais changer le Header de MenuItem en changeant en quelque sorte le Text de RoutedCommand. Et j'aimerais le faire en CanExecuteRoutedEventHanlder. Si je change simplement le RoutedCommandText, MenuItem s ne sont pas mis à jour, je suppose que c'est parce que le menu est déjà créé lorsque CanExecuteRoutedEventHanlder est exécuté.

Fondamentalement, je besoin d'une méthode pour forcer la mise à jour Command-MenuItem.

Répondre

1

Faites votre propre commande:

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; 
} 

Puis en XAML lier l'en-tête à la propriété Text du MyCommandClass.

Questions connexes