0

をコレクションにバインドしGridていますが、コレクション内に別のコレクションがあります。

2 番目のコレクションに値がある場合、グリッド行にアイコンを表示したいと思います。

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できる外部コレクションの各アイテムに対して呼び出される列ができました。BindIcon.VisibilityBoolToImageSourceConverter

INotifyPropertyChangedこの例ではインターフェースを無視しました。

于 2013-10-08T09:04:27.777 に答える