为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
海绵宝宝撒 2021-06-27 11:13:42
我在 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事件。


查看完整回答
反对 回复 2021-07-03
  • 1 回答
  • 0 关注
  • 141 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信