背景:
我创建了一个简短的示例来说明问题:
让我们想象一个名为Person
的简单数据结构,它具有属性Name
,Age
和Picture
。一个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模式。你们知道如何处理这种情况吗?
谢谢。