我在MVVM应用程序中使用常规WPF日历(System.Windows.Controls.Calendar)。日历一次显示一个月,用户将选择一天。日历显示下个月的几天在底部,这很好。
问题如果我从下个月(例如下个月的第二个月)选择一个日期,那么日历会首先使用此日期更新数据绑定,然后立即再次更新这个月的第一天!
这适用于我选择的下个月的所有日期。
日历的SelectedDate和DisplayDate属性是绑定到视图模型的Date属性的数据。
<Calendar SelectedDate="{Binding Date}" DisplayDate="{Binding Date}" />
视图模型看起来像这样
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
}
我不明白为什么会这样?
答案 0 :(得分:1)
您不应将SelectedDate
和DisplayDate
绑定到同一属性Date
。