有没有一种方法可以在CheckBox
不运行与检查相关的代码的情况下进行检查?只是为了视觉外观。
编辑:
private void normalCheck_Checked(object sender, RoutedEventArgs e)
{
normal();
}
想象一下,我想设置normalCheckBox.IsChecked=true;
但不引发事件。那可能吗?
一种方法是分离事件处理程序,设置IsChecked
属性,然后重新附加它。
myCheckbox.Checked -= myCheckbox_Checked;
myCheckbox.IsChecked = true;
myCheckbox.Checked += myCheckbox_Checked;
您可以使用Click
事件而不是Checked
使用复选框的状态,如下所示:
private void normalCheck_Click(object sender, RoutedEventArgs e)
{
if (normalCheck.IsChecked ?? false) { normal(); }
}
然后,使用normalCheck.IsChecked = true;
. 它只会通过点击来提升。
注意:null 合并运算符 ( ??
) 是必需的,因为IsChecked
返回的bool?
类型可能为 null。
如果您指的是在不引发“_Checked”事件的情况下更改检查状态,则可能必须使用参数覆盖事件处理程序以告诉它是否跳过事件。
相关答案:更改复选框值而不引发事件
对于未检查事件:(基于@keyboardP 的解决方案)
myCheckbox.Unchecked -= myCheckbox_Unchecked;
myCheckbox.IsChecked = false;
myCheckbox.Unchecked += myCheckbox_Unchecked;