我正在尝试为WPF创建一个“空列表到可见性转换器”。
这是一个IValueConverter,它接受一个对象(应该是一个列表),如果列表为空(或传递的对象为空),则应返回Visibility.Collapsed;如果列表不为空,则应返回Visibility.Visible。
我计划在datagrid中使用此功能。计划是当传递给ItemsSource的列表为空列表或为空时,使datagrid不可见(折叠)。
我写的EmptyListToVisibilityConverter如下所示:
有没有关于如何做到这一点的提示?
我计划在datagrid中使用此功能。计划是当传递给ItemsSource的列表为空列表或为空时,使datagrid不可见(折叠)。
<my:DataGrid
Name="dataGridAuxiliaryTools"
Style="{StaticResource DataGridStyle}"
CellStyle="{StaticResource DataGridCellStyle}"
ColumnHeaderStyle="{StaticResource DataGridColumnHeaderStyle}"
ItemsSource="{Binding Path=Items}"
IsReadOnly="False"
Visibility="{Binding Path=Items,
Converter={StaticResource emptyListToVisibilityConverter}}"
</my:DataGrid>
我写的EmptyListToVisibilityConverter如下所示:
public class EmptyListToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter,
CultureInfo culture)
{
if (value == null)
{
return Visibility.Collapsed;
}
else if (value is IList<Object>)
{
if ((value as IList<Object>).Count == 0)
{
return Visibility.Collapsed;
}
else
{
return Visibility.Visible;
}
}
else
{
return Visibility.Visible;
}
}
public object ConvertBack(object value, Type targetType, object parameter,
CultureInfo culture)
{
throw new NotImplementedException();
}
当 Items 参数为 null 时,这个代码可以正常工作。但是,当 Items 参数为 List 时,不能正常工作...... 我认为下面的代码不正确,不能检测 "value" 是否为 list ...... 有什么提示吗?
if (value is IList<Object>)
{
if ((value as IList<Object>).Count == 0)
{
return Visibility.Collapsed;
}
else
{
return Visibility.Visible;
}
有没有关于如何做到这一点的提示?