none
Binden der CommandBinding.Executed Eigenschaft an ein ViewModel RRS feed

  • Frage

  • Moin,

    ich wollte eigentlich nur meine Application.Save Commands in meinem ViewModel verabeiten. Dabei überkam mich ein Gedanke der auch erstmal gar nicht schlecht klang, wenn auch nicht ganz kompatibel zum MVVM.

    Ich wollte die Executed Eigenschaften der CommandBindings des Fensters an mein ViewModel binden; habe also den Datentyp nachgeguckt => ExecutedRoutedEventHandler und eine Property im VM erstellt, die einen entsprechenden Handler zurückgibt. Wenn ich diese dann Binde kriege ich eine InvalidCastException mit der Nachricht "Das Objekt des Typs "System.Reflection.RuntimeEventInfo" kann nicht in Typ "System.Reflection.MethodInfo" umgewandelt werden.".

    //XAML
    <Window.CommandBindings>
        <CommandBinding  Command="Save" Executed="{Binding SaveCommandAction}"/>
    </Window.CommandBindings>
    
    //ViewModel
    public ExecutedRoutedEventHandler SaveCommandAction => Save;
    
    public void Save(object sender, ExecutedRoutedEventArgs e)
    {
        //Do Something...
    }

    Ich weiß, dass es Wege und Mittel gibt die Commands anders zu verarbeiten, aber mich interessiert jetzt gerade viel mehr, warum mein Ansatz nicht funktioniert. Ich kann mir aus der Konvertierung keinen Reim machen und warum die Executed Eigenschaft Bindungen zulässt, wenn Sie dann doch nicht funktionieren^^

    Vielleicht kennt ja jemand die Lösung.

    Grüße halliba

    Freitag, 16. September 2016 15:44

Antworten