如何更改我的项目以使用 MacOS 深色模式构建

How can I change my project to build with MacOS DarkMode

我是色盲,想在我的应用中利用 MacOS 中的深色模式。

我看到了 this 但我不知道它是否适合我的上下文。

作为色盲,我无法选择自己的配色方案。我只想要标准的深色模式。

目前我的 window(全部在 XAML / Xamarin.Forms 4.8 中,带有硬编码文本)看起来像这样:

对于 Visual Studio 和 Mac 的演练中的任何指示表示赞赏。


更新 1

如果我添加以下控件:

<Label x:Name="currentThemeLabel" Text="{AppThemeBinding Dark='Dark1', Light='Light2',Default='Default3'}"/>

我的 window 的结果是 Light2。我的 MacOS 应用程序似乎被强制设置为轻模式。


更新 2

我添加了一个按钮处理程序来测试这个:

void OnButtonAddElderClicked(object sender, EventArgs e)
{
    var alert = new NSAlert()
    {
        AlertStyle = NSAlertStyle.Informational,
        InformativeText = "The active theme is: " + Application.Current.UserAppTheme.ToString(),
        MessageText = "Active Theme",
    };
    alert.RunModal();
}

并显示:

所以应用中的主题是 Unspecified。根据这个 info 它指出:

Unspecified will be returned when the operating system does not have a specific user interface style to request. An example of this is on devices running versions of iOS older than 13.0.

我正在使用 macOS Big Sur(最新更新截至 2021 年 2 月 11 日)并且设置为深色:

所以我仍然不明白为什么应用程序返回 Unspecified 而不是 Dark

这是我的 AppDelegate.cs 如果有帮助的话:

using AppKit;
using Foundation;
using VisitsRota;
using Xamarin.Forms;
using Xamarin.Forms.Platform.MacOS;

namespace VisitsRota.MacOS
{
    [Register("AppDelegate")]
    public class AppDelegate : FormsApplicationDelegate
    {
        NSWindow window;
        public AppDelegate()
        {
            var style = NSWindowStyle.Closable | NSWindowStyle.Resizable | NSWindowStyle.Titled;

            var rect = new CoreGraphics.CGRect(200, 1000, 1024, 768);
            window = new NSWindow(rect, style, NSBackingStore.Buffered, false);
            window.Title = "Visits Rota for Mac";
            window.TitleVisibility = NSWindowTitleVisibility.Hidden;
           
        }

        public override NSWindow MainWindow
        {
            get { return window; }
        }

        public override void DidFinishLaunching(NSNotification notification)
        {
            Forms.Init();
            LoadApplication(new App());
            base.DidFinishLaunching(notification);
        }
    }
}

我升级到最新的 5.x 现在显示为黑色:

如果我切换主题,唯一无法正确更改的控件是 Button 对象。