Перейти к основному содержимому
Версия: 11.0.0

Встроенные Преобразователи для привязанных данных

Avalonia UI включает несколько самых частых преобрязователей для привязанных данных. Avalonia UI includes a number of built-in data binding converters for common scenarios:

ПреобразовательОписание
Оператор отрицанияОператор !, может быть указан перед привязкой данных, чтобы инвертировать логическое значение. См. примечание ниже.
StringConverters.IsNullOrEmptyВозвращает true, если строка null или пустая.
StringConverters.IsNotNullOrEmptyВозвращает false, если строка null или пустая.
ObjectConverters.IsNullВозвращает true, если строка null
ObjectConverters.IsNotNullВозвращает false, если строка null
BoolConverters.AndВозвращает true, если все вхождения возвращают true.
BoolConverters.OrВозвращает true, если любое из вхождений возвращают true.

Примеры Операторов Отрицания

Ниже приведен пример блока текста, когда его привязанное значение равно false:

<StackPanel>
<TextBox Name="input" IsEnabled="{Binding AllowInput}"/>
<TextBlock IsVisible="{Binding !AllowInput}">Ввод запрещен</TextBlock>
</StackPanel>

Отрицание работает также и с не логическими значениями. Вначале связанное значение преобразуется в логический тип (используется функция Convert.ToBoolean), и затем к резульатту применяется отрицание.

Целочисленное 0 преобразуется в false, а все остальные целочисленные в true. Вы можете использовать оператор отрицания, чтобы вывести сообщение, когда коллекция пуста, к примеру:

<Panel>
<ListBox ItemsSource="{Binding Items}"/>
<TextBlock IsVisible="{Binding !Items.Count}">No results found</TextBlock>
</Panel>

Также, вы можете использовать двойное отрицание !!, чтобы сначала преобразовать значение из целочисленного в логическое, а потом инвертировать его.

Вы можете использовать такаой способ, чтобы скрыть элемент, если коллексция пуста (кол-во элементов 0):

<Panel>
<ListBox ItemsSource="{Binding Items}" IsVisible="{Binding !!Items.Count}"/>
</Panel>

Дополнительные примеры преобразований

В примере ниже, элемент TextBlock будет скрыт, если значение привязанных данных равно null или пустое:

<TextBlock Text="{Binding MyText}"
IsVisible="{Binding MyText,
Converter={x:Static StringConverters.IsNotNullOrEmpty}}"/>

А этот пример скроет элемент ContentControl, если значение привязанных данных равно null: And this example will hide the content control if the bound object is null or empty:

<ContentControl Content="{Binding MyContent}"
IsVisible="{Binding MyContent,
Converter={x:Static ObjectConverters.IsNotNull}}"/>

Хотите знать больше?

к сведению

Смотрите пример по преобразованию значение в Avalonia UI, здесь.