绑定的ObservableCollection项目用户控件在WrapPanel?(Binding O

2019-08-18 23:36发布

我可能只是在这里失去了一些东西明显,所以我道歉,如果这是一个非常愚蠢的问题。 我有我需要绑定到视图模型一个ObservableCollection美景的WrapPanel。 此的ObservableCollection包含不同类型的视图模型需要在WrapPanel显示时被绑定到另一种类型的视图。 的目标是创建项的可缠绕列表,其中的每一个经由其应该被添加到WrapPanel较小视图的一个实例显示。

我使用MVVM和视图模型不必查看直接访问。 我宁可不创建视图模型和视图,如果在所有可能的之间的绑定,所以手动添加项目到WrapPanel.Children集合不是一个可行的选择。 我在茫然,我怎么能以这样的方式,它会创建另一个视图的实例并将它们添加到自己的孩子视图模型对象的WrapPanel的集合绑定。 难道我只是错误地接近这个问题? 我想有可能是涉及到一个DataTemplate,但它不会出现一个WrapPanel有一个DataTemplate,也不是可绑定。

感谢您的任何见解。

Answer 1:

你需要的是一个使用WrapPanel主办的所有项目的一个ListView。

<ListView ItemsSource={...}>
   <ListView.ItemsPanel>
     <ItemsPanelTemplate>
       <WrapPanel IsItemsHost="True" />
     </ItemsPanelTemplate>
   </ListView.ItemsPanel>
   <ListView.ItemTemplate>
      <DataTemplate>
        <!-- Fill in how you want each item to look here -->
      </DataTemplate>
   </ListView.ItemTemplate>
</ListView>


Answer 2:

使用一个ItemsControl,并设置其ItemsPanel到WrapPanel:

<ItemsControl ItemsSource="{Binding Something}" ItemTemplate="{StaticResource YourDataTemplate}">
  <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
      <WrapPanel />
    </ItemsPanelTemplate>
  </ItemsControl.ItemsPanel>
</ItemsControl>


文章来源: Binding ObservableCollection items to UserControl in WrapPanel?