我是色盲,想在我的应用程序中利用 MacOS 中的暗模式。
我看到了这个,但我不知道它是否适合我的上下文。
作为色盲,我无法选择自己的配色方案。我只想要标准的暗模式。
目前我的窗口(全部在 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
. 根据此信息,它指出:
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);
}
}
}