如何更改我的项目以使用 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
对象。
我是色盲,想在我的应用中利用 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
对象。