.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
相关产品推荐
相关产品推荐

