我在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
很高興我們能夠幫助:) –