Я пытаюсь сделать «конвертер пустого списка в видимость» для WPF.Это IValueConverter, который принимает объект (который должен быть списком), и если список пуст (или если переданный объект является нулем), он должен вернуть Visibility.Collapsed;если список не пустой, он должен вернуть Visibility.Visibile;
Я планирую использовать это для сетки данных.План состоит в том, чтобы сделать сетку данных невидимой (свернутой) всякий раз, когда список, данный для ItemsSource, является пустым списком или пустым.
<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, он не работаетдумаю, что приведенный ниже код неверен и не может определить, является ли «значение» списком или нет ... Есть какие-то подсказки?
if (value is IList<Object>)
{
if ((value as IList<Object>).Count == 0)
{
return Visibility.Collapsed;
}
else
{
return Visibility.Visible;
}
Любые советы о том, как это сделать?