Я знаю, что могу сделать установщик, который проверяет, является ли значение 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. Выбранный ответ, однако, показывает, вероятно, лучший способ создать такую функциональность. Хорошая находка.
источник
Вы можете использовать IValueConverter для этого:
Где IsNullConverter определен в другом месте (а conv устанавливается для ссылки на его пространство имен):
Более общим решением было бы реализовать IValueConverter, который проверяет равенство с ConverterParameter, так что вы можете проверять что угодно, а не только ноль.
источник
Это немного обманывает, но я просто установил стиль по умолчанию, а затем переопределил его, используя DataTrigger, если значение равно нулю ...
источник
Сравните с нулем (как сказал Майкл Нунан):
Сравните с ненулевым (без конвертера):
источник
Я использую это, чтобы включить кнопку, только если выбран элемент списка (то есть, не ноль):
источник
Вы можете использовать
DataTrigger
класс в Microsoft.Expression.Interactions.dll, которые поставляются с Expression Blend .Пример кода:
Используя этот метод, вы можете активировать против
GreaterThan
иLessThan
тоже. Чтобы использовать этот код, вы должны ссылаться на две DLL:источник
Я просто использовал обратную логику здесь ... устанавливая мою стековую панель как невидимую, когда мой комбинированный элемент не заполнен, он работает довольно хорошо!
источник
Стоп! Нет конвертера! Я не хочу «продавать» библиотеку этого парня, но я ненавидел факт создания конвертера каждый раз, когда хотел сравнить материал в XAML.
Так и с этой библиотекой: https://github.com/Alex141/CalcBinding
Вы можете сделать это [и многое другое]:
Во-первых, в объявлении windows / userControl:
затем в текстовом блоке
Волшебная часть - это хит: привязка 'MYValue == null' . Фактически, вы можете установить любое условие, какое захотите [посмотрите на документ].
обратите внимание, что я не фанат третьей стороны. но эта библиотека бесплатна и мало влияет (просто добавьте 2 .dll в проект).
источник
Мое решение в экземпляре DataContext (или ViewModel, если используется MVVM). Я добавляю свойство, которое возвращает true, если выполняется условие Not Null, которое я хочу.
и привязать DataTrigger к вышеуказанному свойству. Примечание. В VB.NET обязательно используйте оператор If и NOT функцию IIf, которая не работает с нулевыми объектами. Тогда XAML это:
источник
Если вы ищете решение, которое не использует IValueConverter, вы всегда можете использовать механизм ниже
источник
Преобразователь:
Переплет:
источник
Вы можете использовать конвертер или создать новое свойство в вашей ViewModel следующим образом:
и использовать это:
источник