猿问

区分由用户输入触发的事件 UWP 背后的代码

我在 UWP 应用程序中有一个 CheckBox,它由用户和背后的代码操作。当用户检查它时,我确实希望Checked触发该事件。但是,当后面的代码检查它时(如下所示),我不希望它被触发。

checkBoxExample.isChecked = true; //The Checked event should not fire.

我想我会从发件人(对象)或 e(RoutedEventArgs)那里得到这个信息,但它不存在。


海绵宝宝撒
浏览 142回答 1
1回答

尚方宝剑之说

您可以添加一个标志,然后设置该标志以避免处理事件: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事件。
随时随地看视频慕课网APP
我要回答