Nachdem ich den Befehl einer Schaltfläche an eine Aktion gebunden habe, rufe ich ein Objekt auf, das ein Fortschrittsereignis anzeigt.
%Vor%Ich möchte das in meinem XAML auf die beste Weise anzeigen.
Eine Möglichkeit besteht darin, zwei bindbare Felder in meiner VM verfügbar zu machen
%Vor%Dann, wo ich aufgerufen werde, um die Aktion auszuführen, würde ich nur die Eigenschaften
aktualisieren %Vor%Das führt zu 2 Fragen:
Gibt es einen direkten Weg in F # , um das progressChanged
-Ereignis verfügbar zu machen, ohne diese intermediate Iteration
-Eigenschaft zu durchlaufen, die von WPF verarbeitet werden kann? Ist es das deklarativste, das wir bekommen können / müssen wir immer irgendwo einen Zustand speichern?
Gibt es außerdem eine natürliche Möglichkeit, diese 'Zustandsmaschine' vollständig in XAML zu binden?
Soweit ich weiß, gibt es keine Möglichkeit, Ereignisse in xaml zu behandeln. Daher ist es wahrscheinlich das Beste, wenn Sie die Ereignisänderungen durch eine Eigenschaft offenlegen.
Um in xaml eine "'state machine' binding" zu erreichen, könnten Sie den Fortschritt als Größe anzeigen und dann die Breite Ihres Fortschrittsbalkens an diese Eigenschaft binden. Ein Beispiel hierfür finden Sie hier .
Du machst das richtig, obwohl ich neu bei F # bin.
Wpf wird normalerweise mit einem MVVM-Muster verwendet. Daher ist die Verknüpfung der Schaltfläche mit einer Befehlseigenschaft und der Fortschrittsbalken für eine int-Eigenschaft korrekt. Ihr Befehl bewirkt dann, dass sich der Fortschrittswert ändert, und Bindings kümmern sich um den Rest.
Die Behandlung von Ereignissen in XAML erfordert Code, der mir persönlich nichts ausmacht, wenn er nur dazu dient, die Benutzeroberfläche zu verbessern. Es sollte sicherlich nicht mit anderen Objekten interagieren. Das bedeutet keine Event-Handler.
Dies bringt Ereignis- und Befehlsverhalten ein, mit denen Steuerungsereignisse an Befehle gebunden werden können. Siehe msdn .
Hoffe das hilft irgendwie.