Xamarin实验-SetFlags-AppTheme_Experimental

问题描述

我决定将Xamarin Forms应用程序更新为XF 4.8。我已经写了一些AppThemeColor来处理暗模式。在XF 4.6中一切正常。升级到XF 4.8现在产生了一个错误,我得到的错误是AppThemeColor不存在,并且想知道是否引用了我的所有程序集。以前,XF 4.7一直存在问题,需要选择实验性主题功能。好的,所以我进入App.xaml.cs类,进入App Initializor并调用

Device.SetFlags(new string[] {"AppTheme_Experimental"});

没有爱。好的,所以我在iOS和Android项目中尝试使用此方法,以在FinishedLaunching和OnCreate方法中以编程方式设置标志。仍然没有爱。我继续遇到错误

就我个人而言,我认为我需要在项目选项设置中进行一些操作,以使编译器可以进行此操作,但是我什么也没看到。

问题:如何打开AppThemeColor使其正确编译?

TIA, 沃利

解决方法

您可以使用AppThemeBinding来处理黑暗模式。

 <!-- Light colors -->
    <Color x:Key="LightPrimaryColor">WhiteSmoke</Color>
    <Color x:Key="LightSecondaryColor">Black</Color>

    <!-- Dark colors -->
    <Color x:Key="DarkPrimaryColor">Teal</Color>
    <Color x:Key="DarkSecondaryColor">White</Color>

    <Style x:Key="ButtonStyle"
           TargetType="Button">
        <Setter Property="BackgroundColor"
                Value="{AppThemeBinding Light={StaticResource LightPrimaryColor},Dark={StaticResource DarkPrimaryColor}}" />
        <Setter Property="TextColor"
                Value="{AppThemeBinding Light={StaticResource LightSecondaryColor},Dark={StaticResource DarkSecondaryColor}}" />
    </Style>

我在Xamarin.Forms 4.8.0.1269上进行了测试。当我在MainActivity之前的Forms.Init()中添加以下代码时,效果很好。

Forms.SetFlags("AppTheme_Experimental");
        global::Xamarin.Forms.Forms.Init(this,savedInstanceState);
        
        LoadApplication(new App());

您可以从下面的链接下载源文件。 https://docs.microsoft.com/en-us/samples/xamarin/xamarin-forms-samples/userinterface-systemthemesdemo/