我在MVVM应用程序中使用常规的WPF日历(System.Windows.Controls.Calendar)。日历每次显示一个月,用户将选择一天。日历显示下个月底部的几天,这很好。日历数据绑定选择错误的日期
问题是如果我从下个月(例如下个月的第二天)选择一个日期,那么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
}
我不明白为什么会这样?
所以你将两个都绑定到同一个属性Date。你有没有尝试看看“SelectedDate”与“DisplayDate”不同? –
这实际上解决了问题哈哈!所以它与日历的内部工作有关?我想我会打开反汇编程序并看看。 – Grubl3r
很高兴我们能够帮助:) –