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

Wpf 如何使用动态修改的系统颜色?,wpf,xaml,markup-extensions,dynamicresource,systemcolors,Wpf,Xaml,Markup Extensions,Dynamicresource,Systemcolors,我有一个极端的例子,动态资源(不允许转换器)和自定义标记扩展(只计算一次)都不能起作用。我想根据当前系统颜色的褪色变体创建渐变笔刷。当系统的颜色主题发生变化时,这些画笔应该会自动更新,这样用户就不需要重新启动应用程序,以防切换到可访问性主题 在WPF应用程序中,是否可以在运行时检测系统颜色主题的更改?某种事件?根据答案,当Windows主题更改时,您应该能够使用Windows消息更改画笔。您可能需要查看Microsoft.Win32.SystemEvents类。我在尝试检测Visual Stud

我有一个极端的例子,动态资源(不允许转换器)和自定义标记扩展(只计算一次)都不能起作用。我想根据当前系统颜色的褪色变体创建渐变笔刷。当系统的颜色主题发生变化时,这些画笔应该会自动更新,这样用户就不需要重新启动应用程序,以防切换到可访问性主题


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

根据答案,当Windows主题更改时,您应该能够使用Windows消息更改画笔。

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

我在尝试检测Visual Studio 2012主题的更改时,偶然发现了这个答案。我正在编写一个使用WPF用户控件的插件,需要知道它何时处于黑暗与光明主题中。感谢上面的hbarck,我使用的系统事件是:

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

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