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

.NET MAUI Entry控件焦点背景色无法恢复默认值求助

.NET MAUI Entry聚焦后背景色无法恢复为透明的解决方法

你遇到的核心问题是VisualStateManager不会自动将属性值回退到全局样式的Setter值,必须在Normal状态中显式指定要恢复的属性值。

修正后的完整样式代码

<Style TargetType="Entry">
    <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}" />
    <Setter Property="BackgroundColor" Value="Transparent" />
    <Setter Property="FontFamily" Value="OpenSansRegular"/>
    <Setter Property="FontSize" Value="14" />
    <Setter Property="PlaceholderColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray500}}" />
    <Setter Property="MinimumHeightRequest" Value="44"/>
    <Setter Property="MinimumWidthRequest" Value="44"/>
    <Setter Property="VisualStateManager.VisualStateGroups">
        <VisualStateGroupList>
            <VisualStateGroup x:Name="CommonStates">
                <VisualState x:Name="Normal">
                    <!-- 显式设置Normal状态的背景色为透明,覆盖Focused状态的设置 -->
                    <VisualState.Setters>
                        <Setter Property="BackgroundColor" Value="Transparent" />
                    </VisualState.Setters>
                </VisualState>
                <VisualState x:Name="Focused">
                    <VisualState.Setters>
                        <Setter Property="BackgroundColor" Value="Yellow" />
                    </VisualState.Setters>
                </VisualState>
                <VisualState x:Name="Disabled">
                    <VisualState.Setters>
                        <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
                    </VisualState.Setters>
                </VisualState>
            </VisualStateGroup>
        </VisualStateGroupList>
    </Setter>
</Style>

问题原因说明

  • 当Entry从Focused切换回Normal状态时,只会应用Normal状态中定义的Setter。如果Normal状态没有设置BackgroundColor,控件会保留Focused状态修改后的值。
  • 全局样式中的BackgroundColor="Transparent"是控件初始状态的默认值,但一旦VisualState修改了该属性,就需要在对应状态里显式重置才能恢复。

如果之前你设置Normal状态无效,大概率是写法错误(比如遗漏了<VisualState.Setters>节点),按照上述代码修改即可解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 20:02:31