簡體   English   中英

綁定到XAML中的子ViewModel的集合

[英]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>

這樣做的問題在於,它將每個ChildUserControlDataContext設置為原始的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM