#xaml #xamarin #xamarin.forms
#xaml #xamarin #xamarin.forms
Вопрос:
У меня есть этот XAML:
<t:FooterTemplate Text="{Binding SourceFooter }" />
Объект имеет поля и цвет.
Как я могу сделать так, чтобы он не был виден с помощью isVisible, если значение SourceFooter = «» ?
Я хочу сделать что-то вроде:
<t:FooterTemplate Text="{Binding SourceFooter }" IsVisible="{ SourceFooter != "" }" />
Но я знаю, что это невозможно сделать.
Комментарии:
1. либо привяжите его к SourceFooter с помощью ValueConverter, либо добавьте свойство bool к вашей виртуальной машине, которое проверяет, является ли SourceFooter пустым
Ответ №1:
Первый вариант: конвертер
Для этого вы можете использовать конвертер. Например:
<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, если строка содержит пробел или null.
Чтобы использовать его в качестве 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 могут быть полезны для более экзотических «триггеров».