Как сделать так, чтобы элемент управления был виден только в том случае, если значение привязки не является пустым пространством? - PullRequest
2 голосов
/ 07 марта 2019

У меня есть этот XAML:

<t:FooterTemplate Text="{Binding SourceFooter }" />

Объект имеет поля и цвет.

Как сделать так, чтобы он не был виден с помощью IsVisible, если значение SourceFooter = ""?

Я хочу сделать что-то вроде:

<t:FooterTemplate Text="{Binding SourceFooter }" IsVisible="{ SourceFooter != "" }" />

Но я знаю, что это невозможно сделать.

1 Ответ

0 голосов
/ 07 марта 2019

Первый вариант: конвертер

Для этого можно использовать конвертер.Например:

 <t:FooterTemplate Text="{Binding SourceFooter }" IsVisible="{Binding SourceFooter, Converter={StaticResource StringEmptyConverter} }" />

И тогда конвертер выглядит следующим образом:

    public class StringEmptyConverter : IValueConverter {

        public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
            return !String.IsNullOrWhiteSpace(((string)value));
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
            throw new NotImplementedException();
        }
    }

Преобразователь просто возвращает false, если строка пустая или пустая.

Чтобы использовать его в качестве StaticResource, вам, конечно, также нужно добавить строку в ResourceDictionary в файле App.xaml.

            <converters:StringEmptyConverter x:Key="StringEmptyConverter" />

Второй вариант: DataTrigger

Триггеры могут изменять свойства визуального элемента.Как следует из названия: они запускаются, когда определенное свойство (SourceFooter) равно определенному значению ("").

<t:FooterTemplate Text="{Binding SourceFooter}" >
 <t:FooterTemplate.Triggers>
   <DataTrigger
    Binding="{Binding SourceFooter}"
    TargetType="t:FooterTemplate"
    Value="">
        <Setter Property="IsVisible" Value="false" />
    </DataTrigger>
 </t:FooterTemplate.Triggers>
</t:FooterTemplate>

Что я использую?

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

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