C#/WPF: Wie kann ich den Fortschritt eines IProgress<T>-Objekts an den Wert eines ProgressBar-Steuerelements binden?

... komplette Frage anzeigen

1 Antwort

Du kannst schon ruhig versuchen, möglichst alles, was die Aktualisierung der Oberfläche betrifft, via Databinding zu lösen. So werden Bindings nur an einer Stelle (im XAML-Markup) vorgenommen und du sparst an Code und an Fehlerquellen.

Zu ermitteln wäre von daher erst einmal nur, ob ein Binding so möglich ist, wie du es dir vorstellst. Die Implementierung des Interfaces sollte eine (abstrakte) Klasse X darstellen, die das Interface INotifyPropertyChanged implementiert. Der erzeugte Event-Handler gibt dann, wenn sich Value ändert, die Information weiter an seine Observer.

Ein ungefähres Beispiel findest du hier, daran kannst du dich orientieren: https://stackoverflow.com/questions/14262220/wpf-progressbar-with-value-databinding

Natürlich müsstest du bei T aufpassen, dass es später immer vom Typ Integer sein wird. Möglicherweise schränkst du den generischen Typ von Klasse X sogar bereits ein, es sei denn, du möchtest konkrete Instanzen an noch andere Elemente binden, die T bspw. als String erhalten.

Einen generellen Verlust der Varianz (durch die Erweiterung um das Property) hast du eigentlich nur, wenn es unterschiedliche Instanzen gibt, die entweder mit der Progressbar verbunden werden oder nicht. Das solltest du als erstes prüfen.

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?