1

我有一个极端情况,其中动态资源(不允许转换器)和自定义标记扩展(仅评估一次)都无法解决问题。我想根据当前系统颜色的褪色变体创建渐变画笔。每当系统的颜色主题发生变化时,这些画笔都会自行更新,以便用户在切换到辅助功能主题时无需重新启动应用程序。

是否可以在 WPF 应用程序中在运行时检测系统颜色主题的变化?某种事件?

4

3 回答 3

1

您可能想查看 Microsoft.Win32.SystemEvents 类。

于 2012-09-28T16:39:18.417 回答
1

According to this answer you should be able to use Windows Messages to change your brushes when the windows theme changes.

于 2012-09-28T12:22:06.667 回答
0

我在尝试检测 Visual Studio 2012 主题的变化时偶然发现了这个答案。我正在编写一个使用 WPF 用户控件的加载项,并且需要知道它何时处于深色与浅色主题中。感谢上面的 hbarck,我使用的系统事件是:

Microsoft.Win32.SystemEvents.UserPreferenceChanged += (s, e) => { DoSomething(); };

当用户在工具->选项中更改 VS 主题时单击确定时触发此事件。

于 2013-04-18T11:41:42.397 回答