当系统主题为黑色时,毛伊岛中没有背景的元素的主题无法正确更改

问题描述 投票:0回答:3

更改操作系统主题时,应用程序通常不会显示所有条目。我尝试更改条目的背景,但是框架在 iOS 上不可见,如果它是空的(没有占位符),那么将很难找到它。 将

Application.Current.UserAppTheme = AppTheme.Light
添加到
App.xaml.cs
文件中。

Screenshot.

iOS 和 Android 均存在该问题。

c# xaml maui app-themes
3个回答
0
投票

响应系统主题更改的一种简单方法是使用 AppThemeBinding 标记扩展

<Entry BackgroundColor="{AppThemeBinding Light=Green, Dark=Yellow}"/>

或者您可以使用样式:

<Style TargetType="Entry" x:Key="EntryStyle">
    <Setter Property="BackgroundColor"
            Value="{AppThemeBinding Light={StaticResource LightNavigationBarColor}, Dark={StaticResource DarkNavigationBarColor}}" />
</Style>

更多信息可以参考响应系统主题变更


0
投票

事实证明,问题是我使用了一个自定义条目,其中没有指定背景颜色,将其设置为透明后,该条目显示正常,除了周围没有框架(ios)和下划线(安卓)。到目前为止,我只是将唱片包裹在

border
中,它就可以工作了。

我暂时保留这个问题,也许有人会找到更优雅的解决方案

更新: 我偶然发现了这篇文章,尝试这种方法后,我不再遇到黑暗主题https://learn.microsoft.com/en-us/answers/questions/231994/disable-dark-mode-in-xamarin-forms -4-8


0
投票

我正在使用.NET8(maui.net应用程序)和VS2022 17.12.0预览版5.0(11/2024);和 当我在代码中设置“Microsoft.Maui.Controls.Application.Current.UserAppTheme=Dark|Light|unspecified”时,“Entry”控件不会动态更改颜色,这样应用程序将不会响应“Dark”中的 Android 设置更改模式“开”或“关”。 在这种情况下,我尝试将页面设置为“瞬态”,但没有成功。 Entry 控件的 TextColor 属性不会自动更改(更改由“Resources\Styles\Style.xaml”中的 Style 元素控制)

<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" />
            <VisualState x:Name="Disabled">
                <VisualState.Setters>
                    <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
                </VisualState.Setters>
            </VisualState>
        </VisualStateGroup>
    </VisualStateGroupList>
</Setter>

这对我有用,在代码中创建一个新的“页面”。

//in this way the Entry control do not changes the "TextColor" dynamically
//Shell.Current.GoToAsync("//SettingPage");
var setPage = new SettingPage(viewController);
await Navigation.PushAsync(setPage); //OK
© www.soinside.com 2019 - 2024. All rights reserved.