行の ObservableCollection (タイプ MyRow) (行と呼ばれる) があるとします。MyRow には、ObservableCollection (タイプ MyRowContents) (Contents と呼ばれる) を含む一連のプロパティがあります。これは基本的に、その行に含まれるすべてのコンテンツのリストです。MyRowContents には、DisplayContents (文字列) などのいくつかのプロパティもあります。
たとえば... 2 つの行と 3 つの列を持つ DataGrid の場合、データ構造は 2 つの「行」になり、それぞれに 3 つの「コンテンツ」が含まれます。
セルの内容が Rows[i].Contents[j].DisplayContents を表示するには、XAML の DataGrid で何をする必要がありますか?
編集:
こんにちは、最初のメッセージで十分に明確でなくて申し訳ありません。データを動的に表示できるデータ グリッドを作成しようとしています (事前に不明なデータベース テーブルから)。
これをガイドとして使用しました: http://pjgcreations.blogspot.com.au/2012/09/wpf-mvvm-datagrid-column-collection.html - 列を動的に表示できます。
<DataGrid ItemsSource="{Binding Rows}" AutoGenerateColumns="False"
w:DataGridExtension.Columns="{Binding ElementName=LayoutRoot, Path=DataContext.Columns}" />
行データを動的に表示する方法がわかりません。
MyRow は次のとおりです。
public class MyRow
{
public int UniqueKey { get; set; }
public ObservableCollection<MyRowContents> Contents { get; set; }
}
MyRowContents は次のとおりです。
public class MyRowContents
{
public string ColumnName { get; set; } // Do I need this?
public object DisplayContents { get; set; } // What I want displayed in the grid cell
}
ビュー モデルにパブリック プロパティ ObservableCollection Rows があります。ご覧のとおり、ItemsSource でバインドしているものです。しかし、各 MyRowContents の「DisplayContents」を取得して、グリッド ビューの適切なセルに表示する方法がわかりません。
列名を動的に表示できることを考えると、次の仮定を行うことができます。Contents (MyRow 内) のアイテムの順序は、列の順序と一致します。
ありがとう