2011-03-01 19 views
1

私はwpfツールキットのデータグリッドを持っており、itemsourceはObservable<Item>にバインドされています。 Itemクラスでは、表示する値を含む別のObservable<bool>リストがあります。ダブルリスト - WPFツールキットDataGrid

これらの値をカスタムテンプレートに表示したいとします。可能であれば、他の行も表示する必要があります(これは通常のプロパティです)。

どうすればいいですか?あなたの答えをありがとう。

更新(2つ目のリストはマスター/詳細ではなく通常の列に表示する必要があります) 2番目のリストに2 boolsが含まれ、Itemクラスに1つの追加プロパティが含まれているとします。その場合は、3列を表示する必要があります。

+0

あなたは何を見せたいのですか? Observable の値に応じて行を作成したい場合は、row1のようにItemとそれ以降の行を表示し、Observable の値をその列に表示しますか?または、UIのObservable プロパティのListテンプレートを作成したいですか? – RockWorld

+0

質問を更新しました。上記を参照してください。 –

答えて

2

第2のデータグリッドを作成し、SelectedItem.Itemsを最初のグリッドからitemssource of secondにバインドすることができます。それとも、このようなあなたのデータグリッドの行の詳細を第二データグリッドを含めることができます。this examplesthis

+0

こんにちはSergey、あなたの答えに感謝します。ただし、2番目のリストは、マスター/詳細としてではなく、通常の列に表示する必要があります。 2番目のリストに2つの 'bool'が含まれ、Itemクラスに1つの余分なプロパティが含まれているとします。その場合は、3列を表示する必要があります。 –

+1

その場合は、行の詳細を作成するか、実行時に追加の列を作成する関数を作成することしかできないと思います。テンプレートで列数を変えることは不可能ですが、カスタム列テンプレート –

+0

をこのリンクに作成することはできます:http://stackoverflow.com/questions/320089/how-do-i-bind-a-wpf-datagrid-to可変数の列は –

1

を見てみましょう

<DataGrid.RowDetailsTemplate> 
    <DataTemplate> 
     <DataGrid ItemsSource="{Binding Items}"/> 
    </DataTemplate> 
</DataGrid.RowDetailsTemplate> 

あなたはグリッド上であなたのための追加の列を作成しますデータグリッドに添付プロパティを書き込むことができます。このプロパティー・インプリメンターは、個々のObservable値とのバインディングを定義します。

+0

良い音ですが、詳細を指定したり、小さな例を作成したりできますか?私はすでにこの解決策を試してきましたが、成功しませんでした。 –

+1

1 ColumnTypeのCollection型(これは一意のクラスでなければなりません)になるグリッドのAttachedPropertyを作成します。 2>プロパティ変更イベントハンドラを定義します。 3>イベントハンドラで、listの値を見つけます。リストのDataGridColumnsを作成します。列のバインディングを定義し、それらをdatagrid列コレクションに追加します。 – RockWorld

+0

ありがとうございます。私はそれを試み、あなたに後で戻ってきます。 –