我将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 :(得分:1)
如果将bool
属性添加到外部集合中的任何数据类型中,则它可以反映其内部集合中是否包含任何值。当然,我不知道你的实际数据类型,因为你没有向我们展示它们,所以我只能在这里做出假设 - 我相信你可以将这个想法用于你自己的数据类型:
带有内部集合的外部集合类:
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}" />
现在,您将为外部集合中的每个项目添加一个名为HasItems
的列,您可以Bind
到Icon.Visibility
属性或自定义BoolToImageSourceConverter
。
我忽略了此示例的
INotifyPropertyChanged
界面。