我遇到了一种奇怪的情况,如果图像的可见性首先设置为折叠而后者设置为通过绑定可见,则图像不会显示。折叠后图像不显示
<ListView Grid.Row="0" ItemsSource="{Binding SystemCheckEntries}">
<GridViewColumn DisplayMemberBinding="{Binding State}" />
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<Image Source="info.png"
Height="14"
ToolTip="{Binding Message}"
Visibility="{Binding Message, Converter={StaticResource StringNullOrEmptyToVisibilityConverter}}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
转换器:
public class StringNullOrEmptyToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return string.IsNullOrEmpty((string) value) ? Visibility.Collapsed : Visibility.Visible;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
如果我在转换器使用Visibility.Collapsed
那么结果看起来像
,如果我打开了可视化树检查图像的特性
它说它假设是“可见的”(但显然不是)
如果我在使用转换器然后Visibility.Hidden
的结果看起来像
这正是我想要的。但是,我不希望图标在没有显示时占用额外的空间。
那么......为什么会这样呢?
我设置了一个类似的简单例子,它工作得很好。 –