2013-10-08 113 views
0

我将一个Grid绑定到集合,集合内部是另一个集合。基于集合的值设置图标

如果第二个集合有任何值,我想在网格行中显示一个图标。

什么是在WPF中这样做的最好方法? 目前我绑定到名为HasValues的属性,该属性检查集合。但是这不适用于整个系列。

public bool HasValues 
    { 
     get 
     { 
      if (this.Collection.SubCollection.Any() && 
       this.Collection.SubCollection.First() != null && 
       this.Collection.SubCollection.Any()) 
      { 
       return true; 
      } 

      return false; 
     } 
    } 

的XAML看起来像这样

<Custom:CustomGridIconButton Icon="{StaticResource ShowIcon}" 
    Visibility="{Binding HasValues}" /> 

但我想这样做是基于如果该指数在副cllection值网格检查索引...

希望这是有道理的。

在此先感谢

+0

上传你网格的xaml代码... –

+0

为什么要检查'this.Collection.SubCollection.Any()'两次? –

回答

1

如果你把你的财产bool到您的收藏外有中任何数据类型,那么它可以反映其内部集合是否具有任何价值。当然,我不知道你的实际数据类型,因为你没有向我们展示他们,所以我只能在这里做出假设 - 我相信你可以采用这个想法到你自己的数据类型:

Outer collection class with内收集:

public class Outer 
{ 
    public ObservableCollection<int> InnerItems { get; set; } 

    public bool HasItems // <<< Add bool property next to inner collection 
    { 
     return Inner != null && InnerItems.Count > 0; 
    } 
} 

外集合属性:

public ObservableCollection<Outer> OuterItems { get; set; } 

在XAML:

<DataGrid ItemsSource="{Binding OuterItems}" /> 

现在,您可以为BindIcon.Visibility属性或自定义BoolToImageSourceConverter的外部集合中的每个项目都有一个名为HasItems的列。

我忽略了这个例子中的INotifyPropertyChanged接口。