Привязка WPF к логическому значению на элементе управления - PullRequest
1 голос
/ 22 декабря 2010

Мне интересно, есть ли у кого-то простое и лаконичное решение для привязки к свойству зависимости, которое должно быть обратным свойству. Вот пример

У меня есть текстовое поле, которое отключено на основе свойства в текстовом данных, например ::100100

<TextBox IsEnabled={Binding CanEdit} Text={Binding MyText}/>

Требование меняется, и я хочу сделать его ReadOnly вместо отключенного, поэтому, не меняя мою модель представления, я мог бы сделать это:

В ресурсах UserControl:

<UserControl.Resources>
  <m:NotConverter x:Key="NotConverter"/>
</UserControl.Resources>

А затем измените TextBox на:

<TextBox IsReadOnly={Binding CanEdit,Converter={StaticResource NotConverter}} Text={Binding MyText}/>

То, что я лично считаю, ЧРЕЗВЫЧАЙНО многословно

Я бы хотел просто сделать это ( обратите внимание! ):

<TextBox IsReadOnly={Binding !CanEdit} Text={Binding MyText}/>

Но, увы, это не вариант, который я знаю.

Я могу придумать два варианта.

  • Создайте вложенное свойство IsNotReadOnly в FrameworkElement (?) И привяжите к этому свойству
  • Если я изменю свою ViewModel, тогда я мог бы добавить свойство CanEdit и другое CannotEdit, которое меня отчасти смутило бы, потому что я считаю, что оно добавляет не относящееся к делу свойство в класс, который я не считаю хорошая практика.

Основная причина этого вопроса заключается в том, что в моем проекте вышеприведенное относится не только к одному элементу управления, поэтому, стараясь сделать свой проект максимально СУХИМЫМ и читабельным, я выкидываю это любому, кто чувствует мою боль и подходит с решением:)

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