DataTrigger, где значение НЕ является нулевым? - PullRequest
147 голосов
/ 10 декабря 2008

Я знаю, что могу сделать установщик, который проверяет, является ли значение NULL, и что-то делает. Пример:

<TextBlock>
  <TextBlock.Style>
    <Style>
      <Style.Triggers>
        <DataTrigger Binding="{Binding SomeField}" Value="{x:Null}">
          <Setter Property="TextBlock.Text" Value="It's NULL Baby!" />
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </TextBlock.Style>
</TextBlock>

Но как я могу проверить значение "not" ... как в "NOT NULL" или "NOT = 3"? Это возможно в XAML?

Результаты: Спасибо за ваши ответы ... Я знал, что могу сделать преобразователь значений (что означает, что мне придется идти в коде, и это не будет чистый XAML, как я надеялся). Однако это отвечает на вопрос: «Нет», вы не можете сделать это в чистом XAML. Однако выбранный ответ показывает, вероятно, лучший способ создать такую ​​функциональность. Хорошая находка.

Ответы [ 12 ]

2 голосов
/ 26 февраля 2016

Вы можете использовать конвертер или создать новое свойство в вашей ViewModel следующим образом:

public bool CanDoIt
{
    get
    {
        return !string.IsNullOrEmpty(SomeField);
    }
}

и используйте его:

<DataTrigger Binding="{Binding SomeField}" Value="{Binding CanDoIt}">
2 голосов
/ 10 мая 2012

Преобразователь:

public class NullableToVisibilityConverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return value == null ? Visibility.Collapsed : Visibility.Visible;
    }
}

Переплет:

Visibility="{Binding PropertyToBind, Converter={StaticResource nullableToVisibilityConverter}}"
...