Ich verwende einen regulären WPF-Kalender (System.Windows.Controls.Calendar) in einer MVVM-Anwendung. Der Kalender zeigt jeweils einen Monat an und der Benutzer wählt einen einzelnen Tag aus. Der Kalender zeigt unten einige Tage des nächsten Monats, was in Ordnung ist.Kalenderdatenbindung wählt falsches Datum
Das Problem ist, dass, wenn ich ein Datum aus dem nächsten Monat (z. B. der 2. des nächsten Monats) wählen, dann aktualisiert Kalender zuerst die Datenbindung mit diesem Datum, und dann sofort aktualisiert es wieder mit dem ersten der Monat!
Das passiert für alle Daten im nächsten Monat, die ich auswähle.
Die SelectedDate- und DisplayDate-Eigenschaften des Kalenders sind Daten, die an die Date-Eigenschaft des Ansichtsmodells gebunden sind.
<Calendar SelectedDate="{Binding Date}" DisplayDate="{Binding Date}" />
Der Blick Modell sieht wie folgt aus
public class CalendarProblemDemoViewModel : INotifyPropertyChanged
{
private DateTime _date;
public CalendarProblemDemoViewModel()
{
_date = DateTime.Today;
}
public DateTime Date
{
get { return _date; }
set
{
_date = value;
Debug.Write($"new date {_date}\n");
OnPropertyChanged(nameof(Date));
}
}
// Note: other code omitted, see the github project
}
Ich verstehe nicht, warum dies geschieht?
So gebunden Sie beide an die gleiche Eigenschaft "Date". Haben Sie versucht zu sehen, ob 'SelectedDate' sich von' DisplayDate' unterscheidet? –
Das löst tatsächlich das Problem LOL! Es hat also mit den inneren Funktionen von Calendar zu tun? Ich denke, ich feuere den Disassembler an und schaue nach. – Grubl3r
Froh wir konnten helfen :) –