EmptyListToVisibilityConverter
Estoy tratando de hacer una "lista vacía al convertidor de visibilidad" para WPF. Este es un IValueConverter que toma un objeto (que debería ser una lista) y si la lista está vacía (o si el objeto pasado es nulo) debería devolver Visibility.Collapsed; si la lista no está vacía, debería devolver Visibility.Visibile;
Planeo usar esto para una cuadrícula de datos. El plan es hacer que la cuadrícula de datos sea invisible (contraída) siempre que la lista dada a ItemsSource sea una lista vacía o nula.
<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>
Escribí el EmptyListToVisibilityConverter de la siguiente manera:
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();
}
Esto funciona bien cuando Items se da como nulo, pero cuando Items se da como una Lista, no funciona ... Creo que el siguiente código no es correcto y no puede detectar si "value" es una lista o no ... Cualquier sugerencia ?
if (value is IList<Object>)
{
if ((value as IList<Object>).Count == 0)
{
return Visibility.Collapsed;
}
else
{
return Visibility.Visible;
}
¿Alguna pista sobre cómo hacer esto?