首页 > 解决方案 > 动态数量的视图应分别绑定到相应的视图模型

问题描述

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

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

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

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

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

..如何将动态数量的视图各自绑定到正确的 ViewModel 以及如何首先创建正确数量的 ViewModel(它们相互保存信息,即图片路径)?

我的想法:当我从配置中知道存在 3 个具有图片内容的单元格并且只创建 3 个实例时PictureViewModel,我该如何创建一个视图 3 次呢?或者反过来,如果我创建 3 个视图,并给它们每个新的 ViewModel,这些 ViewModel 不知道要显示哪些信息......

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

谢谢您的帮助!

标签: c#wpfautofacmvvm-light

解决方案


我采用的解决方案是,在创建新视图(即添加new ImageView到 a 的子级Grid)时,我将 Id 传递给 relative PictureConfig。因此,视图可以告诉 Id 它的ViewModel,它将PictureConfig通过 Id 在 PictureConfigs-List 中找到正确的。


推荐阅读