[英]Binding to a collection of child ViewModels in XAML
我有一個域模型,如下所示:
* Parent
* ParentProperty1
* ParentProperty2
* Children (an array of Child objects)
* Child
* ChildProperty1
* ChildProperty2
我創建了一個自定義的ChildUserControl
,它通過ChildViewModel
綁定到孩子。 我的主窗口綁定到ParentViewModel
並包含一個WrapPanel
,該WrapPanel
為該父級擁有的每個子級顯示一個ChildUserControl
。
面板的XAML為:
<ItemsControl ItemsSource="{Binding Children}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<editor:ChildUserControl DataContext="{Binding}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
這樣做的問題在於,它將每個ChildUserControl
的DataContext
設置為原始的Child
對象,而不是先將它們包裝在ChildViewModels
。 有什么方法可以告訴XAML在綁定過程中為每個子對象創建一個視圖模型? 還是我的ParentViewModel
需要顯式公開ChildViewModels
的可綁定集合? 謝謝。
還是我的ParentViewModel需要顯式公開ChildViewModels的可綁定集合?
這應該。
有什么方法可以告訴XAML在綁定過程中為每個子對象創建一個視圖模型?
不可以,XAML處理器無法為每個包裹實際子元素的子對象創建視圖模型。 XAML是一種標記語言。
您可以使用綁定到子對象並返回子視圖模型對象的值轉換器 :
<ItemsControl.ItemTemplate>
<DataTemplate>
<DataTemplate.Resources>
<local:ModelToViewModelConverter x:Key="converter" />
</DataTemplate.Resources>
<editor:ChildUserControl DataContext="{Binding Path=, Converter={StaticResource converter}}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
但是我當然希望從ParentViewModel中公開適當的類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.