C#WPF MVVM动态视图生成

时间:2018-10-05 20:27:39

标签: c# wpf mvvm

背景:

  • 我正在创建一个高度灵活的数据管理工具。基本思想 是可以配置存储数据的结构并确定 因此没有硬编码。用于可视化以及输入 数据我使用特定的用户控件。在配置期间 为数据对象的每个属性构造使用的用户控件 确定。

我创建了一个简短的示例来说明问题:

让我们想象一个名为Person的简单数据结构,它具有属性NameAgePicture。一个C#类可能看起来像这样:

public class Person {
    public string Name {get; set;}
    public int Age {get; set;}
    public string Picture {get; set;}
}

输入的配置是TextBox类型的三个对象。一个没有验证规则,一个有一个针对正整数的验证规则,一个有一个针对URI的验证规则。

用于显示人物的配置是用于其名称和年龄的两个TextBlocks和用于链接的图片的Image。

真正的问题

我想使用MVVM模式通过WPF应用程序创建上述模式。如果知道数据的结构,这是通过DataTemplates输入的直接任务。对于输出来说,它变得更加复杂,但是一个简单的解决方案将是后面的一些代码。但是,另一种方式是为每个用户控件提供一个值的枚举。然后,视图模型必须传播每个属性的枚举值,并且可以通过Setter选择控件。

到目前为止,一切都很好,但是现在出现了棘手的部分。由于我不知道要存储什么数据,因此必须显示或输入什么数据,该工具将能够动态加载其他DLL,这些DLL可以包含用于新类型数据的新用户控件。我不想触摸我的原始代码来使用这些其他用户控件。所以我的枚举方法行不通,因为我不知道所有可能的枚举值,因此View无法处理这些情况。我看到的唯一方法是将每个属性的用户控件的类名添加到ViewModel,然后我的视图以某种方式调用这些用户控件并显示它们。这绝对违反了MVVM模式。你们知道如何处理这种情况吗?

谢谢。

0 个答案:

没有答案