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?

Respuestas a la pregunta(6)

Su respuesta a la pregunta