У меня есть приложение WPF, и я использую инфраструктуру MVVM.
В моей модели представления у меня есть установщик даты и времени, который проверяет, изменилось ли значение переменной, и если да, устанавливает новое значение для переменной.
Моя проблема заключается в том, что значение даты и времени, если оно неверно, вводится каждый раз в сеттер.
Например: значение даты и времени - 11 января 2019
По первоначальному заданному значению оно равно 11 января 2019 года, но при последующем запуске оно стало 1 ноября 2019 года, а при следующем запуске - до 11 января 2019 года и т. Д. И далее.
Таким образом, возникает исключение StackMemoryException из-за бесконечного зацикливания в функции установки.
Я попытался добавить оператор if для проверки идентификатора: старое и новое значение совпадают, но проблема в том, что значение установщика всегда переключается с января на ноябрь.
Я пытался разобрать дату в том же формате.
public DateTime? ActionDate
{
get { return actionDate; }
set
{
if (value.HasValue && !actionDate.HasValue)
{
actionDate = value;
OnPropertyChanged("ActionDate");
}
else if (value.HasValue && actionDate.HasValue && actionDate.Value.Date.ToString("MM/dd/yyyy") != value.Value.Date.ToString("MM/dd/yyyy"))
{
actionDate = value;
OnPropertyChanged("ActionDate");
}
}
}
Я также попытался запустить приложение на компьютере с ОС Windows 7, и оно работает нормально. Любые предложения будут полезны.
Спасибо
Редактировать: я уже решил эту проблему. Проблема заключалась в теге Datepicker в моем xaml. Я связываю значение модели как с атрибутом SelectedDate, так и с атрибутом Text в средстве выбора даты, поэтому сеттер был вызван дважды и установлена неправильная дата. Я просто удаляю привязку текста из DatePicker в файле xaml.
Спасибо