Ich habe einen RelayCommand, binded zu einem AppBarButton, wie:COMException bei RaiseCanExecuteChanged bei UWP
Command="{Binding NextCommand, UpdateSourceTrigger=PropertyChanged}"
Der CanExecute Eigenschaft Befehl ist nur eine einfache Nullprüfung.
private bool CanExecuteNextCommand() => !(this.SelectedItem == null);
Aber, wenn die RaiseCanExecuteChanged (über Trigger) aufgerufen wird, schnell, mehrere Male, dann hier:
CanExecuteChanged?.Invoke(this, EventArgs.Empty);
ich die folgende Ausnahme erhalten:
„Fehler HRESULT E_FAIL zurückgegeben wurde von einem Aufruf an eine COM-Komponente. "
Wenn ich die Command-Eigenschaft Bindung aus der Ansicht entfernen, funktioniert es.
Ich habe sogar versucht, eine Task.Delay (200) vor dem Anheben der CanExecuteChangeds am Trigger, aber ich bekomme die gleiche Ausnahme.
Hat jemand in UWP so etwas erlebt?
Nicht sicher, ob das Problem in Ihrem eigenen Code war. Was ist der Auslöser? Bitte teile ein [mcve] mit uns. –
Ich sehe keinen Grund, warum Sie 'UpdateSourceTrigger = PropertyChanged' auf eine Befehlsbindung setzen würden! Normalerweise ändert sich ein Befehl nie (aber nichts hält Sie davon ab, Logik in der Befehlsausführungsmethode zu haben!) –