Отдельные события для установленного и непроверенного состояния флажка WPF: почему?

#c# #.net #wpf #events #xaml

#c# #.net #wpf #Мероприятия #xaml

Вопрос:

  1. Существует ли одно подобное событие Changed , которое я могу использовать для обработки обоих событий вместе?

  2. Почему они разделены таким образом?
    Это потому, что наличие одного события для обоих потребует от вас ссылки на элемент управления по имени, которое вам нужно было бы указать в XAML, и это увеличило бы беспорядок?

Ответ №1:

  1. Не напрямую. Однако вы можете использовать один и тот же обработчик событий для обоих и запросить IsChecked свойство sender параметра (после приведения его к CheckBox or ToggleButton , конечно).
  2. эти два события необходимы для конкретной технологии wpf, такой как раскадровка, EventTriggers и подобных. EventTriggers не удается различить состояние, только по событию, поэтому необходимы два разных события.

В общих чертах: я бы вообще не использовал события — я бы привязал IsChecked свойство к соответствующему вашему ViewModel свойству, сведя объем вашего кода к минимуму (в идеале вообще без пользовательского кода).

Ответ №2:

Разделение обеспечивает большую детализацию для тех, кому это нужно (не повредит тем, у кого ее нет), и при желании вы можете обработать оба события одним обработчиком.

  <CheckBox Content="CheckBox" Name="checkBox1" Checked="checkBox1_changed" Unchecked="checkBox1_changed" />
  

Ответ №3:

Например, чтобы запустить раскадровку, когда установлен флажок, и остановить ее, когда флажок снят.