0

我将 a 绑定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}" />

但我想做的是基于网格中的索引检查该索引是否在子集合中具有值...

希望这是有道理的。

提前致谢

4

1 回答 1

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这个例子的界面。

于 2013-10-08T09:04:27.777 回答