,您仍然可以使用綁定 - 因爲WPF支持項目模板,因爲你使用的是MVVM模式你可以創建一個虛擬機列表中的每個子項(你甚至不需要做到這一點你可以直接在每個列表項的模板中綁定到DTO或業務對象)
我現在正在做一個類似的事情 - 我有一個客戶端的材料測試列表,他們想要一個變量數和每種材料的測試類型,但也能夠調整和更改這些測試每個訂單爲他們的客戶
他們實際上有兩種測試類型,但描述更簡單的o F中的例(不要求孩子的虛擬機本身)我剛剛創建一個具有項模板的ItemsControl
:
<ItemsControl ItemsSource="{SomeBinding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{PropertyDescription}" />
<TextBox Text="{PropertyValue}" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
在這種情況下,模型只包含屬性名稱/值的列表,並顯示它們在堆疊面板中(您可能需要使用ItemsPanelTemplate
來設置ItemPanel
。顯然你可以有一個擴展的ItemsControl
,允許DataTemplateSelector
爲每種類型顯示不同的數據模板(實際上WPF已經支持每種類型的數據模板)。
我目前使用Caliburn.Micro實際上做了很多關於你建立兒童模板 - 如果你創建綁定物品作爲虛擬機,你可以做這樣簡單的東西:
<ItemsControl x:Name="SomeBinding" />
只要SomeBinding
屬性中的子項都是虛擬機本身(而這又是另一個故事:P),CM就會處理剩下的東西