将Observable集合绑定到MVVM中的wrappanel

时间:2014-03-26 07:12:30

标签: c# wpf mvvm

我有一个XYZ类型的对象,以及一个viewmodel XYZViewModel。我有这个对象的datatemplate

  <DataTemplate DataType="{x:Type vm:XYZViewModel}">
    <Grid>
        / some ui 
    </Grid>
 </DataTemplate>

我有一个viewmodel&#34; ListXYZViewModel&#34;其中包含&#34; XYZViewModel的列表。现在我应该显示这些对象的列表。

哪种方法最好? 我想把它展示在一个wrappanel中。我做了这个

 <ItemsPanelTemplate x:Key="WrapPanelTemplate">
    <WrapPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>


<DataTemplate DataType="{x:Type vm:ListXYZViewModel}">
    <Grid>
        <ItemsControl ItemsSource="{Binding HomeViewModel}" ItemsPanel="{StaticResource WrapPanelTemplate }"></ItemsControl>            
    </Grid>
</DataTemplate>

这不起作用。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

这对你有用吗?

<ItemsControl ItemsSource="{Binding HomeViewModel}" ItemsPanel="{StaticResource WrapPanelTemplate }">
    <ItemsControl.ItemTemplate>
        <DataTemplate DataType="{x:Type vm:ListXYZViewModel}">
           <Grid>
              <!-- your ui -->
           </Grid>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

答案 1 :(得分:0)

尝试明确设置ItemTemplate

<ItemsControl 
    ItemsSource="{Binding HomeViewModel}" 
    ItemsPanel="{StaticResource WrapPanelTemplate}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Grid>
                / some ui 
            </Grid>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>