У меня есть настраиваемый элемент управления, который нуждается в небольшой настройке при работе на XP или Vista с темой Aero, есть простой способ определить тему (обнаружение операционной системы недостаточно, потому что пользователь может изменить тему) и использовать это в триггере стиля?Как определить текущую тему в Xaml WPF?
мне нужно нанести небольшое изменение маржи на Vista, чтобы получить вид требуемого:
<Setter Property="Margin"
Value="0,-1,0,-1" />
выше сеттер в настоящее время безусловным (например, не в Trigger), но требует от меня имеющий две версии.
В идеале решение должно быть только Xaml, но при необходимости я могу открыть свойство связать с DataTrigger
.
Я подумал об этом, но я подумал, что он перемещает логику дизайнера в бэкэнд, в то время как обнаружение темы в Xaml (или проецирование ее туда) оставляет Xaml ответственным за внешний вид. –
@Sean: конвертер полезен с привязкой, но в этом случае нет привязки. Расширение разметки, вероятно, будет более адекватным. @Ray: конвертер или расширение разметки не являются «бэкэнд» ... они всего лишь шаблонный код, чтобы сделать ваш внешний интерфейс. Если вы всегда делаете абсолютно все в XAML, вы ничего не добьетесь;) –
@ Томас, я знаю, что я не могу делать все, начиная с XAML, но я хочу, чтобы код заставлял публиковать общую информацию, а не принимать решения по презентация. Перечитав ответ Шона, кажется, я пропустил часть его точки (похлопывает лоб). В конце концов, я на самом деле сделал общие настройки MVVM, которые включают свойство CurrentTheme и, следовательно, позволяют мне определять темы «Luna» или «Aero». –