1

RadGridView にバインドしたいオブジェクトのコレクションがあります (ツールキットのテレリックから)。オブジェクトのクラスは次のようになります (理解するために必要な最小限のコード)。ここでは、1 つのプロパティと 1 つの値の配列があります。

public class AttributeEntry : INotifyPropertyChanged
    {
        public string Code { get; set; }
        private string[] _values;
        public string[] Values
        {
            get { return _values; }
            set { _values = value; }
        }
        public string this[int index]
        {
            get { return _values[index]; }
            set
            {
                _values[index] = value;
                if (PropertyChanged != null)
                    PropertyChanged(this, new PropertyChangedEventArgs(Binding.IndexerName));
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
    }

パターンMVVMを使用して、いくつかの列が定義されたRadGridView(私の場合は「コード」プロパティに対応する)と、コレクションの要素に対応する各列で「自動生成」されるいくつかの列を持つ(簡単な)方法を知っている人はいますか(私の場合、配列「値」の要素。コレクションに7つの値がある場合、7つの「自動生成」列が必要です)?

4

3 に答える 3

1

これを実装しようとしている人は、INotifyPropertyChanged を実装した柔軟なクラス構造である expandoobject としてクラスを宣言すると、必要に応じてコードでプロパティを定義できます。

telerik raddatagrid で、itemsource を expandoobjects のコレクションにバインドし、AutoGenerateColumns を true に設定します。

expandoobject の内容に基づいて列を調整する場合は、AutoGeneratingColumn イベントを使用します。これは列生成ごとに発生します。列コントロールをデータ テンプレートとして定義すると、コード ビハインドでそれらにアクセスし、セルにも割り当てることができます。テンプレート。

于 2012-07-16T08:25:37.550 に答える
1

RadGridViewのコレクションにバインドしていると仮定していますAttributeEntry

その場合は、ITypedListコレクションに実装してください。およびメソッドが配列を使用するITypedListvirtual を返すPropertyDescriptorために使用できますGetValueSetValue

于 2011-04-20T15:14:36.953 に答える
0

よくわかりませんRadGridViewが、通常の場合は、データバインディングに基づいて列を自動生成するようにプロパティをDataGrid設定するか、コードに基づいて列を作成するように設定できます。AutoGenerateColumnstruefalse

AutoGenerateColumnsあなたの場合、両方(コレクションの要素とCodeプロパティ)を組み合わせるには、 Propertyを設定しfalse、列を自分で定義する必要があると思います。

編集:

ちょうどMSDNをチェックしました:

明示的に宣言された列フィールドは、自動生成された列フィールドと組み合わせて使用​​できます。両方を使用すると、明示的に宣言された列フィールドが最初にレンダリングされ、次に自動生成された列フィールドがレンダリングされます。

于 2011-04-20T15:11:56.687 に答える