2012-09-28 4 views
1

У меня есть угловой случай, когда оба динамических ресурса (не разрешают конвертеры) и пользовательские расширения разметки (только один раз оценивается один раз) не будут делать трюк. Я хочу создать градиентные кисти на основе выцветших вариантов текущих цветов системы. Эти кисти должны обновляться каждый раз, когда изменяется цветная тема системы, поэтому пользователям не нужно перезапускать приложение, если они переключаются на тему доступности.Как работать с динамически измененными системными цветами?

Возможно ли обнаружить изменения цветовой темы системы во время выполнения в приложении WPF? Какое-то событие?

ответ

1

В соответствии с this ответьте, вы должны иметь возможность использовать сообщения Windows для изменения ваших кистей при изменении темы Windows.

1

Возможно, вы захотите проверить класс Microsoft.Win32.SystemEvents.

0

Я наткнулся на этот ответ, пытаясь обнаружить изменения в темах Visual Studio 2012. Я писал надстройку, которая использовала пользовательские элементы управления WPF и должна была знать, когда она была в теме Dark versus Light. Системным событием, которое я использовал благодаря hbarck выше, было:

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

Это событие активируется, когда пользователь нажимает кнопку ОК при изменении темы VS в инструментах-> опциях.