WPF CheckBox的已检查和未检查状态的单独事件:为什么?

  1. 是否有像Changed这样的单一事件可以用来同时处理这两个事件?

  2. 他们为什么这样分开?
    是因为两者都有一个事件需要你通过名称引用控件,你需要在XAML中指定,这会增加混乱吗?

  1. 不是直接的。 但是,您可以对两者使用相同的事件处理程序,并查询sender参数的IsChecked属性(当然,在将其转换为CheckBoxToggleButton之后)。
  2. 这两个事件是wpf特定技术所必需的,如storyboard, EventTriggers等。 EventTriggers无法通过事件区分状态,因此需要两个不同的事件。

总的来说:我根本不会使用这些事件 – 我会将IsChecked属性绑定到ViewModel上的适当属性,将代码隐藏在最低限度(理想情况下根本没有自定义代码)。

拆分为需要它的人提供了更多的粒度(对于那些不需要它的人来说不会受到伤害),如果你想要,你可以用一个处理程序处理这两个事件。

   

例如,选中时启动故事板并在未选中时停止它。