日历数据绑定选择错误的日期

时间:2016-08-02 15:11:33

标签: c# wpf date mvvm calendar

我在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
}

我不明白为什么会这样?

1 个答案:

答案 0 :(得分:1)

您不应将SelectedDateDisplayDate绑定到同一属性Date