5 Stimmen

Das Steuerelement wird nach der Änderung von CanExecute-Result nicht aktualisiert

In meinem Fenster habe ich Schaltflächen für Lade- und Speichermethoden. Ich verwende CommandBinding und die Speichern-Schaltfläche hat eine CanExecute-Eigenschaft, um den Benutzer davon abzuhalten, die Daten zu speichern, bevor sie geladen sind.

Die CanExecute-Methode ist mit einem einfachen boolschen Wert namens "canSaveXML" verbunden

private void Save_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
    if (canSaveXML == false)
    {
        e.CanExecute = false;
    }
    else
    {
        e.CanExecute = true;
    }
    e.Handled = true;
} 

Meine Absicht ist es, canSaveXML = true zu setzen, nachdem die Daten geladen wurden, aber das Steuerelement wird nicht aktualisiert, nachdem sich der Wert geändert hat. Ich habe etwas gelesen und herausgefunden, dass ich CommandManager.InvalidateRequerySuggested aufrufen muss. Ich tue das jetzt und mein Code sieht wie folgt aus.

canSaveXML = true;
CommandManager.InvalidateRequerySuggested();

Aber das Steuerelement (die Schaltfläche) wird immer noch nicht aktualisiert. Es ist immer noch deaktiviert, bis ich etwas auf der Benutzeroberfläche auslöse oder das Fenster minimieren/maximieren. Nachdem ich das getan habe, ist die Schaltfläche aktiviert.

Was ist hier falsch?

In einem MSDN-Beispiel wird CommandManager.InvalidateRequerySuggested immer wieder mit einem Dispatchertimer aufgerufen, aber ich weigere mich zu glauben, dass das die einzige Lösung wäre.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X