我试图找到创建视图模型和服务的最佳实践(服务只是与服务器对话并将数据返回给视图模型)。我见过两种不同的方法。
- 使用视图模型定位器
- 使用行为(我不确定这是否是好方法)
对于第二种方法,您在 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>
这是对行为的一种很好的利用,还是我应该只使用视图模型定位器模式。