WPF:具有多个子视图的视图

问题描述 投票:0回答:1

我正在尝试在 WPF 中组合一个具有子视图的控件。
子视图的数量(可以增加或减少)从 1 到 10。我希望主视图能够显示这一点。
如果可能的话,我希望避免将每个视图硬编码到 xaml 文件中。相反,我希望它是动态的。我遵循 MVVM 模式,我希望视图的数量与父视图模型中子视图模型的数量相对应。

视图模型看起来也很相似(我简化了代码)

    public class ParentViewModel : ObservableObject
    {
        public List<ChildViewModel> Children { get; set; }
    }

    public class ChildViewModel
    { 
    }

我想尽量避免的 xaml:

    <Grid>

        <views:ChildView DataContext ="{Binding Children[0]}"/>
        <views:ChildView DataContext ="{Binding Children[1]}"/>
        <views:ChildView DataContext ="{Binding Children[2]}"/>
        ... ect 

    </Grid>

我知道 wpf 中的其他一些控件有一个 ItemsSource,您可以将列表绑定到 ViewModel 中。
我只是不确定那会是什么样子,并且正在努力寻找示例。

wpf mvvm user-controls
1个回答
0
投票

您始终可以使用

ListBox
来呈现对象列表。 Itemtemplate 定义了数据项的实际渲染方式:

<ListBox ItemsSource="{Binding Children}">
  <ListBox.ItemTemplate>
    <DataTemplate DataType="ChildViewModel">
      <views:ChildView />
    </DataContext>
  </ListBox.ItemTemplate>
</ListBox>

Microsoft learn:数据模板概述

© www.soinside.com 2019 - 2024. All rights reserved.