【发布时间】:2015-11-06 13:43:14
【问题描述】:
我正在尝试找到创建视图模型和服务的最佳实践(服务只是与服务器对话并将数据返回给视图模型)。我见过两种不同的方法。
- 使用视图模型定位器
- 使用行为(我不确定这是否是好方法)
对于第二种方法,您在 UserControl 上定义一个行为,并在附加事件上创建一个视图模型实例和一个服务实例并将它们放在一起。
protected override void OnAttached()
{
var service = Activator.CreateInstance(ServiceType)
var viewModel = Activator.CreateInstance(ModelType);
base.AssociatedObject.DataContext = viewModel;
base.OnAttached();
}
在您的用户控件 xaml 中
<i:Interaction.Behaviors>
<be:ViewModelBehavior ViewModelType="{x:Type vm:ViewModel1}" ServiceType="{x:Type serv:Service1}"/>
</i:Interaction.Behaviors>
这是对行为的良好使用,还是我应该只使用视图模型定位器模式。
【问题讨论】:
-
您的行为只不过是 ViewModelLocator 实现为行为。此外,还不清楚您对 ViewModelLocator 的理解是什么。一般来说,它是任何组件,允许您访问视图模型实例并且具有多种风格。
-
我正在查看视图模型定位器的 MVVM 灯光实现,您是否建议第一种方法更好?
标签: wpf xaml mvvm behavior viewmodellocator