MVVM 응용 프로그램에서 일반 WPF Calendar (System.Windows.Controls.Calendar)를 사용하고 있습니다. 캘린더는 한 번에 한 달을 보여 주며, 사용자는 하루를 선택합니다. 캘린더는 다음 달의 며칠을 맨 아래에 표시합니다. 괜찮습니다.캘린더 데이터 바인딩이 잘못된 날짜를 선택했습니다.
문제는입니다 나는 다음 달에서 날짜를 선택하면 (예를 들어, 다음 달 2) 다음 데이터는이 날짜와 바인딩 첫 번째 업데이트를 달력, 다음, 즉시의 1로 다시 업데이트 달!
내가 선택한 다음 달의 모든 날짜에 해당됩니다.
캘린더의 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
}
처럼 보인다?
그래서 둘 다 같은 속성 인 '날짜'에 바인딩되었습니다. 'SelectedDate'가'DisplayDate'와 다른가요? –
실제로 LOL 문제를 해결합니다! 따라서 Calendar의 내부 동작과 관련이 있습니까? 디스어셈블러를 해고하고 봐야 겠어. – Grubl3r
우리가 도울 수있어서 기쁘다. –