我在 UWP 应用程序中有一个 CheckBox,它由用户和背后的代码操作。当用户检查它时,我确实希望Checked触发该事件。但是,当后面的代码检查它时(如下所示),我不希望它被触发。checkBoxExample.isChecked = true; //The Checked event should not fire.我想我会从发件人(对象)或 e(RoutedEventArgs)那里得到这个信息,但它不存在。
1 回答
尚方宝剑之说
TA贡献1788条经验 获得超4个赞
您可以添加一个标志,然后设置该标志以避免处理事件:
private bool _checkedFromCode = false;
private void CheckboxChecked(object sender, RoutedEventArgs e)
{
if ( !_checkedFromCode )
{
//your logic
}
}
现在在设置IsCheckedfrom 代码时:
_checkedFromCode = true;
checkBoxExample.IsChecked = true;
_checkedFromCode = false;
该事件仍将触发,但您可以将处理限制为仅当它实际上来自用户交互时。
或者,您可以创建一个自定义派生版本,CheckBox该版本将具有仅针对此场景的自定义事件。
RE:Tapped 事件:建议的Tapped事件解决方案不起作用,因为您不应该假定用户正在使用触摸、鼠标或笔,因为 Windows 10 可以处理任何类型的输入,因此唯一可靠的事件是Checked事件。您使用哪种输入类型无关紧要。这对于使您的应用程序具有可访问性和包容性尤其如此。例如,键盘不会引起Tapped事件。
- 1 回答
- 0 关注
- 141 浏览
添加回答
举报
0/150
提交
取消