我正在用.NET Maui制作一个应用程序,我想知道我是否可以以某种方式只有一个主题,而不是黑暗和浅色模式的主题,因为我希望我的所有用户都有相同的视图. 我如何保持一个主题?

enter image description here

我try 使用 colored颜色 ,但没有成功,因为它们主要绑定到Resources/Styles/Styles.xaml.


Edit:

在/Resources/Styles/Styles.xaml中,我删除了每{AppThemeBinding Light={StaticResource Gray950}, Dark={StaticResource Gray200}}个元素,并将其替换为{StaticResource Gray950},这样每个元素都将具有灯光模式样式.然而,有些元素仍然是黑色的,我不能通过Style Setter更改样式:

    <Style TargetType="TextCell">
        <Setter Property="TextColor" Value="Black" />
        <Setter Property="DetailColor" Value="Black" />
    </Style>

enter image description here

推荐答案

是的,可以在您的.NET Maui应用程序中维护单个主题,而不是同时支持亮模式和暗模式.您所要做的就是在App.xaml(或其他地方)中定义您的 colored颜色 资源,而不需要根据所请求的主题进行区分.这样,你的应用程序将忽略亮/暗模式的系统设置,并始终使用你定义的 colored颜色 .

下面是在App.xaml中设置 colored颜色 资源的示例:

<Application xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="YourAppNamespace.App">
    <Application.Resources>
        <ResourceDictionary>
            <Color x:Key="PrimaryColor">#da8f8f</Color>
            <Color x:Key="SecondaryColor">#fa968e</Color>
            <!-- And so on, for each color you use -->
        </ResourceDictionary>
    </Application.Resources>
</Application>

然后,只需在您的样式中(或直接从组件中)调用这些资源,如下所示:

<Button BackgroundColor="{DynamicResource PrimaryColor}"/>

或者以一种风格:

<Style TargetType="Button">
    <Setter Property="BackgroundColor" Value="{DynamicResource PrimaryColor}"/>
</Style>

这样,无论当前系统主题如何,您都可以保持相同的 colored颜色 .

Csharp相关问答推荐

ASP.NET Core 8 Cors标题未显示

使用GeneratedComInterfaceProperty的.NET 8 COM类对于VB 6/SYS或ALEViewer不可见

等待限制选项似乎不适用于频道

REST API端点中异步后台代码执行的类型

Quartz调度程序不调用作业(job)类

静态对象构造顺序

如何在实体框架中添加包含列表?

方法从数据表中只 Select 一个条件?

未找到任何HTTP触发器.成功部署Azure Functions Project后(c#)

使用泛型可空类实现接口

HelperText属性不支持复杂内容(混合C#和标记)

基于C#和ANGING的SignalR实时聊天流媒体应用

将操作从编辑页重定向到带参数的索引页

当try 测试具有协变返回类型的抽象属性时,类似功能引发System.ArgumentException

如何正确处置所有动态控件?

RavenDb:为什么在字符串==空的情况下过滤会过滤得太多?

在Visual Studio 2022中查找Xamarin模板时遇到问题

S,在.NET核心控制台应用程序中,AddScope和AddSingleton有什么不同?

为什么INTEGER在通过反射调用时对空对象返回TRUE,而在INTEGER上调用时返回FALSE?

使用ImmutableList时,DynamicData未按预期工作