每个动态视图应绑定到相应的ViewModel

时间:2018-06-15 07:48:27

标签: c# wpf autofac mvvm-light

情况:这个想法是,有一个config.xml,可以定义Column-Count和Row-Count,以及有关每个单元应显示内容的一些信息(即图像路径,html路径,工作流的id。这个配置我读取并保存在Config - 类:

public class Config
{
    public int RowCount;
    public int ColumnCount;
    public List<PictureConfig> PictureConfigs;
    public List<HtmlConfig> HtmlConfigs;
    public List<WorkflowConfig> WorkflowConfigs;
}

为此,我为每种类型的单元格内容创建了一个视图=&gt; ImageViewHtmlViewWorkflowView当然还有相应的ViewModel,它们应该提供要显示给定路径或ID的内容。

我正在使用WPF,带有Autofac的MVVM Light并且有一个ViewModelLocator.

问题:正如我Config - 类中所见,可能有多个相同类型的视图(每次都有不同的信息显示)。现在在MVVM Light中,给出了视图优先的想法,但是......

..如何动态数量的视图分别绑定到正确的ViewModel,以及如何创建正确数量的ViewModel(它们保存彼此的信息,即图片路径)?

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

我现在已经困惑了几天,但找不到干净的方式。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我采用的解决方案是,在创建新视图(即将new ImageView添加到Grid的子代)时,我传递了相对PictureConfig的ID 。这样,视图便可以将其ViewModel告诉ID,ID会在ID的PictureConfigs-List中找到正确的PictureConfig