从WPF中的ViewModel动态生成简单视图?

Oli*_*ver 7 c# wpf mvvm

我正在使用这篇文章和其他资源慢慢学习WPF .

我专注于应用程序逻辑 - 定义模型+ viewModel,并创建对这些操作的命令.我还没有看过视图和.xaml格式.

当我在处理逻辑时,我希望有一个视图可以渲染我绑定到它的任何viewModel.观点应该

  • 将任何公共string属性渲染为文本框,并将文本框绑定到属性
  • 将属性的名称呈现为标签.
  • 将任何公共"Command"属性渲染为按钮,并将按钮绑定到命令(可能仅在命令不带参数的情况下?)

在维护MVVM设计模式的同时,这样的事情是否可行?如果是这样,我将如何实现它?此外,文章建议避免使用代码.xaml隐藏 - 这个视图可以在纯xaml中实现吗?

Nik*_*lay 6

我认为只有XAML才有可能.如果要在运行时生成视图,则必须在ViewModel上使用反射并相应地生成控件.如果要在编译时生成视图,则可以在构建时使用某些模板引擎(如T4或字符串模板)或CodeDom从ViewModel生成xaml文件.或者你可以更进一步,有一些元数据格式(甚至DSL),你将从中生成模型和视图等.这取决于您的应用需求.

而且在MVVM中,代码隐藏对于可视逻辑和对模型/视图模型的绑定是好的,这些只能在XAML中完成.