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

通过Switch控件Toggled事件切换明暗主题异常问题咨询

解决Switch控件切换深浅主题的问题

尝试使用Switch控件在浅色主题(Light)与深色主题(Dark)之间进行切换。目前触发Toggled事件时可切换至深色主题,但关闭开关时无法切回浅色主题,是否需要使用条件判断来实现该功能?

现有代码

XAML代码

<Switch x:Name="Darkswitch"
        Toggled="Darkswitch_Toggled"
        IsToggled="False"
        OnColor="White"
        ThumbColor="Gray"
        VerticalOptions="Center"
        HorizontalOptions="Center" />

C#代码

private void Darkswitch_Toggled(object sender, ToggledEventArgs e)
{    
        Application.Current.UserAppTheme = AppTheme.Dark;
}

解决方案

是的,必须通过条件判断实现双向切换。你当前的代码忽略了Switch的状态变化,不管开关开启还是关闭都强制设置为深色主题,因此无法切回浅色。

修改C#代码,通过ToggledEventArgs.Value获取Switch的当前状态,根据状态匹配对应的主题:

private void Darkswitch_Toggled(object sender, ToggledEventArgs e)
{    
    Application.Current.UserAppTheme = e.Value ? AppTheme.Dark : AppTheme.Light;
}

额外注意:如果应用默认主题是浅色,Switch的IsToggled初始值设为False是正确的;若默认主题为深色,需将IsToggled改为True,确保开关状态与当前主题保持一致。

内容的提问来源于stack exchange,提问作者Bas H

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 20:00:58