Как я могу временно отключить события в решении WPF?C#

Место общения программистов C#
Ответить
Anonymous
 Как я могу временно отключить события в решении WPF?

Сообщение Anonymous »

Я работаю над решением C# WPF, основанным на окнах XAML. В одно из этих окон я добавил DatePicker и хочу, чтобы что-то было сделано в два момента:
  • Когда окно открыто загружается
  • При изменении даты в DatePicker.
Это можно сделать очень легко :
public void LoadData()
{
date_DatePicker.SelectedDate = DateTime.Today;

Do_Something();
}
private void DatePicker_DateChanged(object sender, SelectionChangedEventArgs e)
{
if (date_DatePicker.SelectedDate.HasValue)
{
Do_Something();
}
}

... но вы видите проблему: поскольку загрузка окна вызвала заполнение даты в DatePicker, это запускает Do_Something(), вызывая двойной запуск этого метода.
Я думал отключить это, проверив e.OriginalSource, но, видимо, там тоже дата уже заполнена (я был надеясь (DatePicker)(e.OriginalSource).SelectedDate иметь значение null).
Есть ли способ сказать что-то вроде:
public void LoadData()
{
disable_Events();
date_DatePicker.SelectedDate = DateTime.Today;
re-enable_Events();

Do_Something();
}

или:
private void DatePicker_DateChanged(object sender, SelectionChangedEventArgs e)
{
if ((date_DatePicker.SelectedDate.HasValue) &&
!(previous_value_was_empty(sender,e))) //

Подробнее здесь: https://stackoverflow.com/questions/778 ... f-solution
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»