在MVVM中将Observable集合绑定到wrappanel

本文关键字:绑定 wrappanel 集合 Observable MVVM 中将 | 更新日期: 2023-09-27 17:53:18

我有一个类型为XYZ的对象和一个视图模型XYZViewModel。我有这个对象的数据模板

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

我有一个视图模型"ListXYZViewModel",其中包含"XYZViewModel"列表。现在我应该显示这些对象的列表。

哪一个是最好的方法?我想把它放在包装板里展示。我做了这个

 <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>

这个不行,有什么建议吗?

在MVVM中将Observable集合绑定到wrappanel

这对你有用吗?

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

尝试显式设置ItemTemplate:

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