Xamarin.Forms:Toggle事件处理程序未生成及无触发取消勾选问题
解决Xamarin.Forms中修改Toggle状态不触发事件&事件处理生成失败的问题
一、取消Toggle勾选但不触发Handle_Toggled事件
直接设置IsToggled属性默认会触发Toggled事件,这里有两种可靠的解决方式:
方法1:临时移除再重新绑定事件处理
这种方式适合简单场景,直接操作事件绑定:
// 在需要修改状态的地方执行 // 先移除事件处理 userToggle.Toggled -= Handle_Toggled; // 修改Toggle状态为未勾选 userToggle.IsToggled = false; // 重新绑定事件处理 userToggle.Toggled += Handle_Toggled;
方法2:用标志位跳过事件逻辑
如果你的场景需要频繁修改状态,这种方式更灵活,不会反复解绑绑定:
// 先定义一个全局标志变量 private bool _skipToggleEvent = false; // 确保事件已经正确绑定(比如在构造函数或OnAppearing里) public YourPage() { InitializeComponent(); userToggle.Toggled += Handle_Toggled; } private void Handle_Toggled(object sender, ToggledEventArgs e) { // 如果是代码主动修改状态,直接跳过逻辑 if (_skipToggleEvent) { _skipToggleEvent = false; return; } // 这里写你原本的事件逻辑 } // 当需要取消勾选时 _skipToggleEvent = true; userToggle.IsToggled = false;
二、为什么构造函数里输入userToggle.IsToggled +=按Tab没生成事件处理?
你这里犯了个小错误:IsToggled是Toggle的属性,用来获取或设置勾选状态;而对应的事件是Toggled,才是用来绑定处理程序的。
你需要改成输入userToggle.Toggled +=,然后按两次Tab,Visual Studio 2017就会自动帮你生成Handle_Toggled事件处理方法了。
内容的提问来源于stack exchange,提问作者charitht99 perera
相关产品推荐
相关产品推荐

