我正在尝试在 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 中。
我只是不确定那会是什么样子,并且正在努力寻找示例。
您始终可以使用
ListBox
来呈现对象列表。 Itemtemplate 定义了数据项的实际渲染方式:
<ListBox ItemsSource="{Binding Children}">
<ListBox.ItemTemplate>
<DataTemplate DataType="ChildViewModel">
<views:ChildView />
</DataContext>
</ListBox.ItemTemplate>
</ListBox>