使用WPF MVVM模式实现接口

Sen*_*ncy 0 c# wpf interface mvvm

我想为WPF用户控件集实现一个接口(添加行为).我正在使用MVVM设计模式.我应该在哪里实现界面?在View模型类后面或中的usercontrol代码中?

例如:

我的界面是

interface IWizard
{
    event RoutedEventHandler MoveNext;
    event RoutedEventHandler MoveBack;
    event RoutedEventHandler Cancelled;   

    bool IsLast;
    bool IsFirst;
}
Run Code Online (Sandbox Code Playgroud)

现在在其他地方我想访问这个接口实现的用户控件.

 ((IWizard)userControl).MoveNext += ...
 ((IWizard)userControl).MoveBack += ...
 ((IWizard)userControl).IsLast = true; 
Run Code Online (Sandbox Code Playgroud)

等等..

在UserControl代码后面实现

我不能直接在视图模型中访问接口的属性/方法.我必须手动链接它们.对 ?


PS:在这个例子中,我想要IsLast一个按钮的可见性绑定(TwoWay Bind)属性.

在View模型类中实现

我无法将usercontrol作为Interface对象访问.例如:((IWizard)userControl).MoveNext += ...

使用MVVM设计模式在Usercontrol上实现接口的最佳实践是什么?

Har*_*san 6

您应该在UserControl中实现此接口,因为它与UserControl直接相关,它与ViewModel无关.View Model用于View和Model之间的业务逻辑和交互.在UI/View上发生的事件不应该直接在ViewModel上执行任何操作.

我知道你将无法直接在视图模型中访问属性,但这就是MVVM的用途.使用绑定和命令将Control中的属性和方法绑定到ViewModel