我有这个XAML:
<t:FooterTemplate Text="{Binding SourceFooter }" />
对象具有边距和颜色。
如果SourceFooter的值=“”,如何使用IsVisible使它不可见?
我想做类似的事情:
<t:FooterTemplate Text="{Binding SourceFooter }" IsVisible="{ SourceFooter != "" }" />
但是我知道那是不可能的。
答案 0 :(得分:0)
第一个选项:转换器
您可以为此使用转换器。例如:
<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();
}
}
如果字符串为空格或null,则转换器仅返回false。
要将其用作StaticResource,当然,您还必须在App.xaml文件的ResourceDictionary中添加一行。
<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对于更奇特的“ Triggers”很有用。