C# 动态视图数量应分别绑定到相应的ViewModel

C# 动态视图数量应分别绑定到相应的ViewModel,c#,wpf,autofac,mvvm-light,C#,Wpf,Autofac,Mvvm Light,情况:想法是,要有一个config.xml,其中可以定义列计数和行计数,以及关于每个单元格应该显示什么的一些信息(即图像路径、html路径、工作流id)。我应该读取此配置并将其保存在config-类中: public class Config { public int RowCount; public int ColumnCount; public List<PictureConfig> PictureConfigs; public List<H

情况:想法是,要有一个config.xml,其中可以定义列计数和行计数,以及关于每个单元格应该显示什么的一些信息(即图像路径、html路径、工作流id)。我应该读取此配置并将其保存在
config
-类中:

public class Config
{
    public int RowCount;
    public int ColumnCount;
    public List<PictureConfig> PictureConfigs;
    public List<HtmlConfig> HtmlConfigs;
    public List<WorkflowConfig> WorkflowConfigs;
}
公共类配置
{
公共整数行数;
公共卫生统计;
公共图片列表;
公开列表HtmlConfigs;
公共列表工作流配置;
}
为此,我为每种类型的单元格内容创建了一个视图=>
ImageView
HtmlView
WorkflowView
,当然还分别创建了相应的视图模型,这些视图模型应该为给定的路径或id提供要显示的内容

我将WPF、MVVM灯与Autofac一起使用,并且有一个
ViewModelLocator。

问题:如我的
Config
-类所示,可以有多个相同类型的视图(每次都有不同的显示内容信息)。现在根据MVVM的观点,给出了视图优先的想法,但是

。如何动态地将每个视图绑定到正确的ViewModel,以及如何首先创建正确数量的ViewModel(保存彼此的信息,即图片路径)?

我的想法:当我从配置中知道存在3个包含图片内容的单元格,并且只创建了3个
PictureViewModel
实例时,我该如何创建一个视图3次呢?或者反过来说,如果我创建了3个视图,并为每个视图提供了一个新的ViewModel,那么这些ViewModel不知道要显示哪些信息

我已经困惑了好几天了,但找不到一条干净的路


谢谢你的帮助

我采用的解决方案是,在创建新视图时(即将
新图像视图
添加到
网格
的子级),我传递相对
图片图
的Id。因此,视图可以告诉Id它的
ViewModel
,它将根据Id在PictureConfigs列表中找到正确的
PictureConfig

假设您的ViewModel有一些模型集合-(public List models{get;set;}),并且您希望为每个模型显示一个视图。您所要做的唯一一件事就是决定以何种形式呈现模型—ListView提供了选择每一个模型的方法,DataGrid提供了添加行的方法,ItemsControl只会将它们堆叠起来。在XAML中声明其中一个并绑定其ItemsSource。现在设置它的ItemTemplate,它将告诉控件如何显示每个视图,您就完成了。请记住,您只能绑定到属性。