Wie Binden BlackoutDates im WPF-Toolkit Kalender-Steuerelement?
Ich würde gerne binden, eine Liste der Termine der BlackoutDates Eigenschaft, aber es scheint nicht wirklich, möglich. Vor allem in einem MVVM-Szenario. Hat jemand etwas erreicht zu haben wie dieser? Gibt es gute Kalender-Steuerelemente, die spielen schön mit MVVM?
- Was passiert, wenn Sie versuchen zu binden, BlackoutDates? Sie bekommen eine Fehlermeldung?
- Keine Blackoutdates ist das nicht auch eine option...ich denke, ich bin mit dem Datepicker, aber ich dachte, dass nur Kalender und eine textbox.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für Ihre DatePicker dilemma, fand ich ein ordentliches hack über angefügte Eigenschaften (modifiziert aus meine Verwendung des CommandBindings):
Ich bin sicher, ich bin zu spät, um Ihnen zu helfen, aber hoffentlich jemand anderes finden es nützlich.
Hier ist eine verbesserte version von Matt ' s Antwort, die uns erlaubt, Arbeit mit dem BlackoutDates wie bei normalen Beobachten Sammlung (Sie brauchen nicht, um neue Sammlungen erstellen jedes mal, wenn Sie ändern möchten die BlackoutDates). Wir speichern eine Liste aller Kalender und datepickers gebunden und in Ihren tag speichern wir die Sammlung in MVVM. Eine einfache Modifikation der Klasse erlauben, die Arbeit mit ObservableCollection<DateTime> falls benötigt:
Hier ist die ObservableCollection<DateTime> version:
Implementiert habe ich das obige Beispiel (die AttachedProperties Klasse). Ich erstellte eine Eigenschaft im Viewmodel wie diese:
Diesem ViewModel inerits von ObservableBase:
Dies ist der Xaml-Code in das Fenster, das verwendet diese Eigenschaft:
Nun, wenn ich hinzufügen BlackoutDates auf den Kalender, ich nenne UpdateCalendarBlackoutDates in meinem ViewModel:
Dieser funktioniert perfekt für mich. Es könnte noch weiter perfektioniert durch die änderung der OnRegisterCommandBindingChanged Methode zu akzeptieren, die eine Liste von DateRanges statt einer CalendarBlackoutDatesCollection, und ändern Sie die Eigenschaft auf eine Liste wie diese:
aber für jetzt, das funktioniert für mich..