C # 'if' Значение привязки - PullRequest
       4

C # 'if' Значение привязки

3 голосов
/ 31 октября 2011

У меня есть представление списка, которое заполняется связыванием для класса с именем House.

Вот пример моего кода:

<DataTemplate DataType="house">
    <TextBlock Text="{Binding sold_status}" />
</DataTemplate>

Как видите, одно из моих имен переменных - sold_status. Это bool.

Я хочу показать либо «ПРОДАНО», либо «НЕ ПРОДАНО» для 1 и 0 соответственно.

Можно ли сформировать оператор if на основе значения?

Так, чтобы вы могли визуализировать, чего я хочу достичь:

<DataTemplate DataType="house">
    <TextBlock Text="({Binding sold_status} == 1) 'SOLD' else 'NOT SOLD'" />
</DataTemplate>

Ответы [ 5 ]

5 голосов
/ 31 октября 2011

Вы захотите создать стиль с DataTriggers, чтобы установить необходимые свойства. Вы также можете использовать конвертер, но изменение свойств элемента управления пользовательского интерфейса на основе базовых данных - это как раз то, чем являются триггеры / стили.

.. На самом деле, я вижу, что вы в основном «конвертируете» sold_status в небольшой текст. Для этого используйте конвертер. Выложу быстрый пример ..

См. Верхний ответ здесь: WPF: отображать значение bool как «Да» / «Нет» - у него есть пример класса конвертора, который вы можете использовать повторно.

2 голосов
/ 31 октября 2011

Посмотрите интерфейс IValueConverter для примера.Реализуйте метод Convert, чтобы вернуть текст, который вы хотите отобразить.

0 голосов
/ 31 октября 2011

Я предлагаю вам использовать DataTrigger. Это довольно просто и не требует отдельного конвертера.

<DataTemplate DataType="house">
    <TextBlock x:Name="Status" Text="SOLD" />
    <DataTemplate.Triggers>
         <DataTrigger Binding="{sold_status}" Value="False">
              <Setter TargetName="Status" Property="Text" Value="NOT SOLD"/>
         </DataTrigger>

    </DataTemplate.Triggers>
</DataTemplate>
0 голосов
/ 31 октября 2011

Лучшим подходом к этому было бы использование конвертера. Сохраните привязку, как вы это делали в первом примере, затем пусть конвертер возвращает строку с «Sold», если true и т. Д.

0 голосов
/ 31 октября 2011

Вы хотите использовать значение преобразователь .

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