2009-07-07 3 views

ответ

17

Вам нужен пользовательский конвертер. Взгляните на article

1

Что-то могло быть добавлено в пакете обновления 1 (SP1), но способ, которым я достиг этого в прошлом, - это ValueConvertor, который преобразует значение в логическое.

В вашем примере ваш преобразователь вернет значение true, если значение было> 25, иначе false. Если это не имеет смысла, я могу привести пример вверх :-)

4

Не без кода позади. Обычная практика:

  • При работе с элементами пользовательского интерфейса создайте IValueConverter и привяжите его к свойству с помощью конвертера.
  • При работе со связанными данными создайте свойство bool для своих данных и активируйте его.
+0

мне нравится идея использования преобразователя, даже со связанными данными. При использовании шаблона MVVM он помогает сохранить код просмотра из режима просмотра. –

29

Вы можете использовать триггер данных и установить привязку RelativeSource к Self. Триггеры данных позволяют связывание и привязки позволяет вам иметь конвертеры.

Пример:

<Button Content="I change colour depending on my width for some reason"> 
     <Button.Triggers> 
      <DataTrigger 
       Binding="{Binding 
       Path=Width, 
       RelativeSource={RelativeSource Self}, 
       Converter={StaticResource isLessThanConverter}, 
       ConverterParameter=50}" 
       Value="True"> 
       <Setter Property="Button.Background" Value="Red" /> 
      DataTrigger> 
     Button.Triggers> 
    Button> 

Reference

+3

+1 для указания подхода isLessThanConverter с помощью ConverterParameter. – cplotts

+2

В привязке вместо 'ActualWidth' следует использовать вместо этого свойство' Width' 'NaN', если оно не задано явно. – pogosama

Смежные вопросы