【问题标题】:How can I change my project to build with MacOS DarkMode如何更改我的项目以使用 MacOS 暗模式构建
【发布时间】:2021-02-10 19:23:13
【问题描述】:

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

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

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

目前我的窗口(全部在 XAML / Xamarin.Forms 4.8 中,带有硬编码文本)如下所示:

任何有关 Visual Studio for Mac 演练的指针表示赞赏。


更新 1

如果我添加以下控件:

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

我窗口上的结果是 Light2。我的 MacOS 应用程序似乎被强制为 Light 模式。


更新 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 将在操作系统没有要请求的特定用户界面样式时返回。这方面的一个例子是在运行 iOS 版本早于 13.0 的设备上。

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

所以我还是不明白为什么应用返回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);
        }
    }
}

【问题讨论】:

  • @Cfun 我的意思是当您将系统设置为暗模式时 MocOS 使用的暗模式。在他们的文档中,他们只是说定义一个主题并显示一些颜色。我怎么知道这些颜色的依据是什么?
  • @Cfun 还有适用于 iOS 和 Android 的示例,而不是 MacOS。
  • 例如,您是否在 MacOS 上尝试过但无法正常工作(我想它会工作)?另一方面,我认为 Xamarin 不知道 MacOS 将哪种颜色用于哪个主题,您可能需要自己定义它们。
  • @Cfun 我承认我没有尝试过。我是 Mac 环境编码的新手,不想盲目粘贴针对不同平台记录的代码。
  • 我在这里学到了很多:youtube.com/watch?v=Q2F51yNHv_I 但由于某种原因,无论我的“系统”模式是什么,我的“应用程序”似乎总是“轻模式”。

标签: macos xaml xamarin.forms visual-studio-mac macos-darkmode


【解决方案1】:

我未分级到最新的 5.x,现在它显示为暗:

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

【讨论】:

  • 虽然我应该指出,NavigationPage 派生的 GUI 的渲染很奇怪(显示很多白色)。但是TabbedPage 可以。
猜你喜欢
  • 2021-10-14
  • 1970-01-01
  • 2012-03-12
  • 2019-02-18
  • 1970-01-01
  • 1970-01-01
  • 2020-09-23
  • 1970-01-01
  • 2019-05-09
相关资源
最近更新 更多