据我了解,ViewModel 通过数据绑定与 View 进行通信。但是,如何在 ViewModel 中为 View 创建 UI 元素呢?
谢谢。
谢谢。
MVVM是一种松散的设计模式,只要代码仅涉及UI,将代码放在代码后台是可以接受的,但请记住,这可能更难进行单元测试。
严格地说,ViewModel不与View通信,在ViewModel中没有对View的引用,而是View从ViewModel读取数据并在ViewModel上执行命令。
问题是需要动态创建组件。
您可以在视图上放置一个容器对象,然后在modelView上创建UI元素,并将此UI元素集合绑定到容器的内容属性。但我认为这不是一种好的做法。这种方法会破坏模型和视图的分离,因此您需要避免动态组件的创建。
MVVM方法有所不同。有时候我们需要使用一些小技巧,例如:不使用ListBox的MemberPath属性,而是定义一个ItemTemplate,在模板上放置ButtonBase元素以支持命令!或者您可以扩展ListBox并支持命令。
我的建议是使用DataTemplates而不是动态对象创建。更改ModelView上绑定的成员,然后就会自动为您创建视图。对于复杂情况可能会有一些困难,但我们都在为了保持MVVM结构而努力。