バインディングは引き続き使用できます。WPF はアイテムのテンプレート化をサポートしており、MVVM パターンを使用しているため、リスト内のサブアイテムごとに VM を作成するだけで済みます (これを行う必要さえなく、各リスト項目のテンプレートを DTO またはビジネス オブジェクトに)
私は現在、同様のことを行っています。クライアント向けの材料テストのリストがあります。クライアントは、材料ごとにさまざまな数と種類のテストを行いたいと考えていますが、注文ごとにそれらのテストを微調整および変更できるようにしたいと考えています。お客様
実際には 2 つのテスト タイプがありますが、2 つのケース (子 VM 自体を必要としない) の簡単な方を説明するためItemsControlに、項目テンプレートを持つ を作成しました。
<ItemsControl ItemsSource="{SomeBinding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{PropertyDescription}" />
<TextBox Text="{PropertyValue}" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
この場合、モデルにはプロパティ名/値のリストが含まれているだけで、それらをスタックパネルに表示します ( を使用して を設定する必要がある場合がありItemPanelますItemsPanelTemplate。WPF は既に型ごとのデータ テンプレートをサポートしています)。ItemsControlDataTemplateSelector
私は現在、Caliburn.Micro を使用しています。これは、実際に多くの子テンプレートを設定します。そのため、バインドされたアイテムを VM として作成すると、次のように簡単に実行できます。
<ItemsControl x:Name="SomeBinding" />
プロパティ内の子項目が VM 自体である限り、残りは CM が処理しSomeBindingます (ただし、それは別の話です:P)。