我在UWP应用程序中有一个CheckBox,由后面的用户和代码操纵。当用户检查它时,我确实希望触发Checked
事件。但是,当后面的代码检查它时(如下所示),我不希望它发射。
checkBoxExample.isChecked = true; //The Checked event should not fire.
我想我会从发件人(对象)或e(RoutedEventArgs)获取此信息,但它不在那里。
答案 0 :(得分:2)
您可以添加一个标志,然后设置该标志以避免处理该事件:
private bool _checkedFromCode = false;
private void CheckboxChecked(object sender, RoutedEventArgs e)
{
if ( !_checkedFromCode )
{
//your logic
}
}
现在从代码设置IsChecked
:
_checkedFromCode = true;
checkBoxExample.IsChecked = true;
_checkedFromCode = false;
事件仍将触发,但您可以将处理限制在实际来自用户交互的情况下。
或者,您可以创建CheckBox
的自定义派生版本,该版本仅针对此方案具有自定义事件。
RE:Tapped
事件:Tapped
事件建议的解决方案不起作用,因为您不应该假设用户正在使用触摸,鼠标或笔,因为Windows 10适用于任何类型的输入,因此唯一可靠的事件是Checked
事件。使用哪种输入类型无关紧要。尤其如此,使您的应用程序易于访问且具有包容性。例如,键盘不会导致Tapped
事件。