WPF: условие триггера, когда не пустая строка - PullRequest
13 голосов
/ 06 августа 2011

Конечно, мы можем проверить строковое свойство некоторого элемента управления, которое было пустым, как в следующем коде:

<Trigger SourceName="atCaption" Property="Text" Value="{x:Static sys:String.Empty}">
    <Setter TargetName="imgBack" Property="Margin" Value="0"/>
    <Setter TargetName="atCaption" Property="Margin" Value="0"/>
</Trigger>

и как определить условие, которое не является пустой строкой?

<!--unfortunately, can't accept '!=' operator in xaml.-->
<Trigger SourceName="atCaption" Property="Text" Value!="{x:Static sys:String.Empty}">
    <Setter TargetName="imgBack" Property="Margin" Value="0"/>
    <Setter TargetName="atCaption" Property="Margin" Value="0"/>
</Trigger>

помоги мне.

Ответы [ 4 ]

6 голосов
/ 03 июня 2015

для дополнения ответа WPF-it (для меня это постоянное решение, а не быстрое решение)

    <DataTrigger Binding="{Binding VolumeGroup}" Value="{x:Null}">
        <Setter Property="Background" Value="{StaticResource DataGridBackground}" />
    </DataTrigger>
    <DataTrigger Binding="{Binding VolumeGroup}" Value="">
        <Setter Property="Background" Value="{StaticResource DataGridBackground}" />
    </DataTrigger>
</Style.Triggers>
<!--inverted rare case: VolumeGroup will usually be empty so cells will be {StaticResource DataGridBackground}-->
<Setter Property="Background" Value="DarkOliveGreen" />
5 голосов
/ 07 августа 2011

Использование ValueConverter является решением.

При использовании MVVM вы можете рассмотреть дополнительное свойство в классе ViewModel, с которым вы связываетесь, которое определяет, как должен отображаться элемент управления.

Когда я использую MVVM-способ решения этой проблемы, я неМне не нужен триггер, я просто добавляю дополнительные свойства к ViewModel и привязываю свойства View к этим дополнительным свойствам, чтобы манипулировать View

4 голосов
/ 07 августа 2011

Чтобы быстро обойти это, значения, которые применяются к обратному условию, должны быть установлены по умолчанию в объявлении элемента или в стиле, а затем использовать условие прямого равенства для изменения значений.

, например

Предположим, если поле 5 - это то, что вы задали для пустой строки, а 0 - это то, что вы должны установить для непустой строки, тогда вы по умолчанию установите 0 в качестве простого Setter в Style, а затем проверите пустую строку с помощью Trigger и установите 5 Убедитесь, что установленный по умолчанию сеттер (для 0) отображается перед триггером (для 5) в стиле.

0 голосов
/ 06 августа 2011

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

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