【问题标题】:How to work with dynamically modified system colors?如何使用动态修改的系统颜色?
【发布时间】:2012-09-28 12:13:21
【问题描述】:

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

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

【问题讨论】:

    标签: wpf xaml markup-extensions dynamicresource systemcolors


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        当用户在 tools->options 中更改 VS 主题点击 OK 时触发此事件。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-02-05
          • 1970-01-01
          • 1970-01-01
          • 2011-07-02
          • 2013-12-02
          • 2020-05-01
          • 1970-01-01
          相关资源
          最近更新 更多