1

初めて WPF で何かをしようとしたとき、WPF DataBinding に戸惑いました。次に、MSDN で次の例を徹底的に調べました: http://msdn.microsoft.com/en-us/library/ms771319(v=VS.90).aspx

これで、マスター部分と詳細部分の両方で、1 つのソース (1 つのテーブル) からデータを取得するフォームにマスター/ディテール パラダイムを使用する方法がよくわかりました。たとえば、データを含むグリッドがあり、グリッドの下に現在の行の詳細なデータを含むフィールドがいくつかあります。

しかし、詳細なデータが異なるが関連するテーブルから取得された場合、どうすればよいでしょうか? 例: 'id' と 'Name' 列を持つテーブル 'Users' があります。「id」、「Filename」、「UserId」などの列を持つ別のテーブル「Pictures」もあります。そして今、マスター/ディテール パラダイムを使用して、フォームを作成する必要があります。また、マスターで行を選択するたびに、関連するすべての画像が詳細に表示されます。

それを行う正しい方法は何ですか?例を教えてください。

4

1 に答える 1

3

テーブルへのアクセス方法がわかりません。しかし、私は Entity Framework を使用するのが好きです。「写真」テーブルに「ユーザー」主キーを指す外部キー関係があるようです。

Entity Framework 4 と .Net 4 (私がこれを書いている時点では両方とも RC です) を使用すると、非常にスムーズです。現在のデータベースに基づいてモデルを生成するだけです。これにより、すべてのデータベース レコードがほとんどクラスにマップされます。各テーブルはモデル内のコレクション (コンテキストと呼びます) になるため、次の方法でアクセスできます。

context.Users と context.Pictures

context.Users は、Pictures と呼ばれる "ナビゲーション プロパティ" を自動的に持ちます。これは、そのユーザーを指す外部キーを持つ特定の画像のコレクションです。

そのため、マスターの「グリッド」を context.Users にバインドして、ユーザーに関する任意の情報を表示します。次に、詳細セクションで、詳細の「リスト」を次のようにバインドできます: (grid.selectedRow as User).Pictures

上記は、正しい方向に開始できるようにするための疑似コードにすぎません。

Entity Framework を使用したくない場合は、データベースから情報にアクセスする方法についてさらに情報を提供できれば、マスター詳細シナリオをデータバインドする方法のより具体的な例を提供できる可能性があります。

于 2010-03-11T18:15:36.150 に答える