0

それで、私は数年間Winformsに手を出した後、WPFクラブに参加しています。私は間違いなくWPFでデータバインディングを楽しんでいますが、DataGrid.

SQL クエリの結果を格納する高度にカスタマイズされたデータ構造があり、これを WPF で引き続き使用したいと考えています。オブジェクトのリストへのバインドの例を見てきましたが、SQL クエリのような動的なものではありません。

DataGrid行と列の数、ヘッダー、データなどの必要な情報を取得できるように、データ構造を実装できるインターフェイスはありますか?

4

2 に答える 2

0

アイテムはINotifyPropertyChangedを実装する必要があり、変更についてグリッドに通知されるように、それらをObservableCollection<>に配置する必要があります。

AutoGenerateColumnsをtrueに設定すると、グリッドはモデルのプロパティごとに列を自動的に作成します。

「生の」データがあり、Model-Classがない場合は、列を手動で作成する必要があると思います。WPFバインディングは非常に柔軟性があり、インデックス付きのプロパティや配列などにバインドすることもできます。これは「動的」データに役立つかもしれません。

<TextBlock Text="{Binding myArray[0]}" />
于 2012-10-05T07:39:27.067 に答える
0

私の目標は、に似たカスタム構造にバインドして、構造に関する情報を「検出」DataTableできるようにすることでした。DataGrid

簡単な答えは、次のインターフェイスを実装することです。

IList IEnumerable ITypedList

から継承するCustomTypeDescriptor(または実装するICustomTypeDescriptor)だけでなく

この質問CustomTypeDescriptorは、最も困難なものを扱うのに大いに役立ちました。

私の列挙オブジェクトは、メインテーブルへの参照を格納する単純なオブジェクトであり、特定の行と列の値を尋ねることができました。

public AgilityTableRow(AgilityTableBase table, int rowIndex)
    {
        _table = table;
        _rowIndex = rowIndex;
    }

    public object this[int columnIndex]
    {
        get 
        {
            return _table[columnIndex, _rowIndex]; 
        }
    }

    public object this[string columnName]
    {

        get 
        {
            return _table[_table.GetFieldIndex(columnName), _rowIndex]; 
        }
    }

注:このクラスは実装する必要がICustomTypeDescriptorあり、プロパティを取得するために呼び出しをテーブルに転送するだけです。

public PropertyDescriptorCollection GetProperties()
    {
        return _table.GetProperties();
    }
于 2012-10-26T13:34:38.123 に答える