You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:20:04