我们可以在ViewModel中创建UI元素吗?

时间:2014-05-23 04:04:51

标签: wpf mvvm view model viewmodel

我对viewmodel中创建ui元素感到困惑?如果是,那怎么可能呢?

提前感谢。

2 个答案:

答案 0 :(得分:2)

不,在mvvm模式中,viewmodel只负责提供数据和状态。

理论上,您可以将许多视图连接到同一个视图模型;例如,用于图形显示的wpf视图和用于文本模式的命令行。如果您认为在哪里放置哪种功能是有意义的。

如果要以编程方式创建UI对象,可以在代码隐藏视图中执行此操作。绝对允许你在那里做,并像在传统的表单项目中一样挂钩任何事件。

答案 1 :(得分:0)

你为什么要这样做?您是否需要在运行时生成动态UI?

ViewModel不适用于UI元素,但它可以保存UI元素的后备数据元素(如组合框的项目列表)。

UI是View的一项工作。您可以在运行时生成XAML,但我不会在“ViewModel”中创建它。我会创建一个单独的,不同的演示者或控制器类,或者使用逻辑后面的XAML代码。您可以通过ViewModel反映生成XAML,但我会将ViewModel限制为View和Model之间的数据和中介,并保持所有UI分离。

我不是WPF专家,我只是回答了MVC / MVVM的一般最佳实践观点以及ViewModel的目的。从理论上讲,ViewModel应该可以在多个UI表示层(ASP.NET / Razor / XAML)中重用,因此请避免在ViewModel中使用UI特定的标记。将其限制为属性,容器,方法,数据访问调用或服务调用等。

相关问题