Связывание в DynamicResource ResourceKey wpf mvvm - PullRequest
2 голосов
/ 12 апреля 2011

Я хочу связать стиль кнопки на основе условия if else. Я создал одно строковое свойство в viewmodel и привязал к атрибуту стиля кнопки следующим образом:

<Button x:Name="copd" Content="COPD" 
    Command="{Binding COPDReadingsCommand}" 
    Style="{DynamicResource ResourceKey={Binding CheckCopd}}"  
    HorizontalAlignment="Center" VerticalAlignment="Center" 
    Margin="20" FontWeight="Bold" />

Я перебираю resourceDictionary и получаю все ключи. Используя if else, я изменяю значение свойства строки (CheckCopd) в if else.

Я получаю нужные значения, если еще, но стиль не применяется к кнопке при выполнении моего приложения. Отображает только общий стиль кнопки.

Как связать DynamicResource?

Просьба предложить?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 12 апреля 2011

Нельзя использовать привязки к свойствам DynamicResource, поскольку они не являются производными от DependencyObject.Вам нужно будет либо установить свойство Style непосредственно из кода, либо просто использовать привязку.

Вы можете использовать стиль для типа Button, который имеет DataTrigger на основе пользовательского свойства, которое динамически изменяетсмотреть.Но в этом случае вам нужен один стиль, который меняет свои сеттеры в зависимости от вашего состояния.Это не позволит вам динамически изменять свойство Style.

0 голосов
/ 20 ноября 2015

Вы можете попробовать это ... Я придумал способ создать DynamicResourceBinding, на котором вы можете использовать конвертер для достижения желаемых результатов. (Теоретически вы также можете просто использовать стили и триггеры, но я отвлекся ...)

Как создать привязку DynamicResourceBinding, поддерживающую конвертеры, StringFormat?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...