0

解決策のある単純な問題と、解決策のないより複雑な問題を示しましょう。

1)製品のリストを持つシェルフがあるとします。製品でデータグリッドを表示したい。

解決策:ビューで、データグリッドに "ItemSource = {Binding Products}" のような同様のコードを挿入することがあります。次に、ViewModel で、"Products" という名前の ObservableCollection プロパティを作成します。わかった。

2)私はたくさんの棚を持っていますが、どれが多くの商品を持っていますか? 多くのデータグリッドを上下に表示したい。各データグリッドには、1 つのシェルフの製品のリストが表示されます。

さて、どうすれば多くのデータグリッドにバインドできますか? 3 つのデータグリッドにすることができます。500 個のデータグリッドにすることができます。MVVMを使用してこれを行うにはどうすればよいですか?

ありがとう。私の質問を理解していただければ幸いです。

4

2 に答える 2

4

ViewModel に Shelf という Shelf のコレクションがあると仮定すると、選択が必要な場合は ItemsControl または ListBox を使用し、DataTemplate を定義できます。

<ItemsControl ItemsSource="{Binding Path=Shelves}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <DataGrid ItemsSource="{Binding Path=Products}"/>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
于 2013-06-19T00:15:24.903 に答える
0

一般的なアプローチは、2つのビューモデルを作成することだと思います

class Storage : ViewModelBase
{
     ObservableCollection<Shelf> Shelves { get; private set; }

     ...........
}


class Shelf : ViewModelBase
{
     ObservableCollection<Product> Products { get; private set; }

     ..........
}

ItemsControl次に、 withを作成してプロパティItemsSource = "{Binding Shelves}"を指定するだけItemsTemplateで、コレクション内の各シェルフがデータグリッドとして表示されます。

于 2013-06-19T00:21:42.013 に答える