我正在使用winui 3应用程序,当我将主题切换到深色模式时,系统上下文菜单(右键单击标题栏)未更新为深色,因此我需要使用
[DllImport("uxtheme.dll", EntryPoint = "#135", SetLastError = true, CharSet = CharSet.Unicode)]
private static extern int SetPreferredAppMode(int preferredAppMode);
但此代码仅在应用程序运行时有效:
SetPreferredAppMode(2); //Force Dark
InitializeComponent();
我需要根据运行模式下的主题更改来更新系统上下文菜单。 例如,我需要更改按钮单击事件中的系统上下文菜单主题。 但系统上下文菜单主题不会在按钮单击事件中更新。
出了什么问题?还有其他方法可以强制更新系统上下文菜单主题吗? Windows 设置或其他应用程序如何执行此操作?
最佳答案
尝试调用FlushMenuThemes()
在运行时更改系统上下文菜单的主题:
[DllImport("uxtheme.dll", EntryPoint = "#135", SetLastError = true, CharSet = CharSet.Unicode)]
private static extern int SetPreferredAppMode(int preferredAppMode);
[DllImport("uxtheme.dll", EntryPoint = "#136", SetLastError = true, CharSet = CharSet.Unicode)]
private static extern void FlushMenuThemes();
private void Button_Click(object sender, RoutedEventArgs e)
{
...
SetPreferredAppMode(2);
FlushMenuThemes();
}
关于c# - 窗口中的深色系统上下文菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75835069/