Ich habe eine funktionierende Lösung, suche aber nach einem bsseren/eleganteren Weg, wie sich folgende Problematik lösen lässt:
In meiner WPF Anwendung gibt es Buttons und andere UI Elemente. Diese sind IsEnabled = true oder false, je nachdem in welchem Zustand sich die Anwendung befindet. In meinem Fall gibt es 5 Zustände in denen sich die Anwendung befinden kann.
Beispiel:
Wenn sich die Anwendung im Zustand 2 oder 4 befindet, soll Button1.IsEnabled = true sein, andernfalls false.
Um es im ersten Schritt im Code-Behind zu bündeln, habe ich einen enum definiert, welcher die 5 Zustände enthält. So brauche im im Code Behind an entsprechender Stelle nur noch den Enum setzen. Dieser ist wiederum als public Property mit Setter definiert, wobei im Setter gleich die UI Vorgänge stattfinden:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37:
| public partial class Muh: Page, INotifyPropertyChanged { public enum MuhStatus { foo, bar, ... } private MuhStatus currentStatus; public MuhStatus CurrentStatus { get { return this.currentStatus; } set { this.currentStatus = value; OnPropertyChanged("CurrentStatus");
if (value == MuhStatus.foo) { this.borderStatus.Visibility = Visibility.Visible; this.textBlockStatusItem.Text = "Waiting ..."; }
if (value == MuhStatus.bar) { this.buttonRandom.IsEnabled = false; this.buttonAbort.IsEnabled = false; this.message.Show("Results loaded."); this.borderStatus.Visibility = Visibility.Hidden; }
if (value == ...) { ... } } } |
Jetzt könnte ich Converter erstellen, und die jeweiligen UI Elemente die IsEnabled Eigenschaft an den passenden Converter binden, der - passend für das jeweilige UI Element - true oder false liefert, anhängig von CurrentStatus. Würde funktionieren, habe ich auch schon ausprobiert, nur finde das ziemlich umständlich.
Hier meine Frage:
Gibt es eine elegantere Möglichkeit/Vorgehensweise dies zu realisieren ?