EmptyListToVisibilityConverter
Estou tentando fazer um "conversor de lista vazia para visibilidade" para o WPF. Este é um IValueConverter que pega um objeto (que deve ser uma lista) e, se a lista estiver vazia (ou se o objeto passado for nulo), ele retornará Visibility.Collapsed; se a lista não estiver vazia, ela retornará Visibility.Visibile;
Eu pretendo usar isso para um datagrid. O plano é tornar o datagrid invisível (recolhido) sempre que a lista fornecida ao ItemsSource for uma lista vazia ou 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>
Eu escrevi o EmptyListToVisibilityConverter da seguinte maneira:
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();
}
Isso funciona bem quando itens é dado como nulo, mas quando itens é dado como uma lista, não funciona ... Eu acho que o código abaixo não está correto e não pode detectar se "valor" é uma lista ou não ... Qualquer dica ?
if (value is IList<Object>)
{
if ((value as IList<Object>).Count == 0)
{
return Visibility.Collapsed;
}
else
{
return Visibility.Visible;
}
Alguma dica de como fazer isso?