【发布时间】: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