情况:想法是,有一个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;
}
为此,我为每种类型的单元格内容创建了一个视图=> ImageView
,HtmlView
,WorkflowView
,当然还有相应的ViewModel,它们应该为给定的路径或id提供显示的东西。
我正在使用WPF,MVVM Light与Autofac,并有一个ViewModelLocator.
问题:正如我的Config
-class中所见,可以有多个相同类型的视图(每次都有不同的信息显示什么)。现在在MVVM Light中,给出了视图优先的想法,但是......
..how可以动态数量的视图每个绑定到正确的ViewModel以及如何创建正确数量的ViewModel(其中包含每个其他信息,即图片路径)?
我的想法:当我从配置中知道,存在图片内容的3个单元格并且只创建3个PictureViewModel
实例时,我如何创建3次视图?或者相反,如果我创建3个视图,并为每个视图提供一个新的ViewModel,那些ViewModel不知道要显示哪些信息......
我现在已经困惑了几天,但找不到干净的方式。
谢谢您的帮助!
我采用的解决方案是,在创建新视图的那一刻(即将new ImageView
添加到Grid
的孩子们),我通过Id为相对PictureConfig
。因此视图可以告诉Id它的ViewModel
,它将在Id的PictureConfigs-List中找到正确的PictureConfig
。