c# - 从 WPF 中的 ViewModel 动态生成简单 View ?

标签 c# wpf mvvm

我正在使用 this article 慢慢学习 WPF和其他资源。

我专注于应用程序逻辑 - 定义模型 + viewModel,并创建对它们进行操作的命令。我还没有查看 View 和 .xaml 格式。

当我处理逻辑时,我想要一个可以呈现我绑定(bind)到它的任何 viewModel 的 View 。 View 应

  • 将任何公共(public) string 属性呈现为文本框,并将文本框绑定(bind)到属性
  • 将属性名称呈现为标签。
  • 将任何公共(public)“Command”属性呈现为按钮,并将按钮绑定(bind)到命令(也许仅当命令不带任何参数时?)

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

最佳答案

我认为仅在 XAML 中是不可能的。如果您想在运行时生成 View ,那么您只需对 ViewModel 使用反射并相应地生成控件。如果您想在编译时生成 View ,那么您可以在构建时使用某些模板引擎(如 T4 或字符串模板)或 CodeDom 从您的 ViewModel 生成 xaml 文件。或者你可以走得更远,拥有一些元数据格式(甚至 DSL),你可以从中生成模型和 View 等。这取决于您的应用需求。

而且在 MVVM 中,代码隐藏对于视觉逻辑和绑定(bind)到模型/ View 模型也是可以的,这不能仅在 XAML 中完成。

关于c# - 从 WPF 中的 ViewModel 动态生成简单 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10139934/

相关文章:

c# - 将不记名 token 发送到端点,然后验证此 token

c# - 用于检查 x 是否以 y 开头的字符串的 IComparer

c# - 创建证书时未处理的加密异常

c# - WPF ComboBox 自定义绑定(bind)

wpf - 在 WPF PRISM/MVVM 应用程序中避免内存泄漏的最佳方法是什么

c# - C# 中的聚合与继承,或替代方案

c# - 数据绑定(bind)枚举 - 命名空间中不存在名称 'StoreLocation'

wpf - 获取对 HeaderedItemsControl 中项目的引用

android - 在 ViewModel 和 Fragment/Activity 交互和通信之间应用 MVVM

wpf - 如何对 Ribbons ComboBox 的 SelectedItem 进行数据绑定(bind)