【问题标题】:Binding DataGrid visibility with its own (ItemSource.Count > 0) Silverlight MVVM将 DataGrid 可见性与其自己的 (ItemSource.Count > 0) Silverlight MVVM 绑定
【发布时间】:2015-02-05 18:25:04
【问题描述】:
正如标题所暗示的,当它的 itemsource 有 0 行时,我想隐藏我的网格。
<sdk:DataGrid Name="RegionDataGrid" Visibility="{Binding <!-- WHAT_SHOULD_COME_HERE -->}" AutoGenerateColumns="False" VerticalAlignment="Top" IsReadOnly="False" Height="Auto" Width="Auto" >
【问题讨论】:
标签:
c#
wpf
silverlight
mvvm
datagrid
【解决方案1】:
首先你需要一个转换器,它会在 List 为空时返回 Collapsed。
public class EmptyCollectionConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
ICollection list = (ICollection)value;
if (list == null)
return Visibility.Collapsed;
return list.Count != 0 ? Visibility.Visible : Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
那么就可以使用RelativeSource绑定值Self来绑定ItemsSource,
<sdk:DataGrid Visibility="{Binding ItemsSource, RelativeSource={RelativeSource Self}, Converter={StaticResource EmptyCollectionConverter}}" />