【发布时间】:2016-07-20 01:42:13
【问题描述】:
我遇到了一种奇怪的情况,如果图像的可见性首先设置为折叠,然后通过绑定设置为可见,图像将不会显示。
<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,那么结果看起来像
这正是我想要的。但是我不希望图标在不显示时占用额外的空间。
那么..为什么会发生这种情况?
【问题讨论】:
-
我设置了一个类似的最小示例,它工作得很好。