Отдельные события для проверенного и непроверенного состояния WPF CheckBox: почему? - PullRequest
22 голосов
/ 07 апреля 2011
  1. Существует ли какое-либо отдельное событие типа Changed, которое я могу использовать для совместной обработки обоих событий?

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

Ответы [ 3 ]

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

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

11 голосов
/ 07 апреля 2011

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

 <CheckBox Content="CheckBox" Name="checkBox1" Checked="checkBox1_changed" Unchecked="checkBox1_changed" />
1 голос
/ 09 мая 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...