如何使用动态修改的系统颜色?

时间:2012-09-28 12:13:22

标签: wpf xaml markup-extensions dynamicresource systemcolors

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

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

3 个答案:

答案 0 :(得分:1)

根据this回答,您应该能够在Windows主题更改时使用Windows消息来更改画笔。

答案 1 :(得分:1)

您可能需要查看Microsoft.Win32.SystemEvents类。

答案 2 :(得分:0)

我在尝试检测Visual Studio 2012主题中的更改时偶然发现了这个答案。我正在编写一个使用WPF用户控件的加载项,并且需要知道它何时处于Dark vs. Light主题中。由于上面的hbarck,我使用的系统事件是:

Microsoft.Win32.SystemEvents.UserPreferenceChanged + =(s,e)=> { 做一点事(); };

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