【发布时间】:2012-01-12 18:19:36
【问题描述】:
我想为一组 WPF 用户控件实现一个接口(添加行为)。 我正在使用 MVVM 设计模式。 我应该在哪里实现接口?在用户控件代码后面或视图模型类中?
例如:
我的界面是
interface IWizard
{
event RoutedEventHandler MoveNext;
event RoutedEventHandler MoveBack;
event RoutedEventHandler Cancelled;
bool IsLast;
bool IsFirst;
}
现在在其他地方我想访问实现这个接口的用户控件。
((IWizard)userControl).MoveNext += ...
((IWizard)userControl).MoveBack += ...
((IWizard)userControl).IsLast = true;
等等。
在 UserControl 代码后面实现
我无法直接在视图模型中访问接口的属性/方法。我必须手动链接它们。对吧?
PS:在这个例子中,我想 Bind(TwoWay Bind) IsLast 属性与按钮的可见性。
在视图模型类中实现
我无法将用户控件作为接口对象访问。
例如:((IWizard)userControl).MoveNext += ...
使用 MVVM 设计模式在用户控件上实现接口的最佳实践是什么?
【问题讨论】:
-
请解释您为什么要在 ViewModel 中使用视图的属性和事件,以便我们帮助您正确处理。这不是执行 MVVM 的方法。在 MVVM 中,ViewModel 对视图一无所知,除了它有一个 DataContext。
-
Erno:我稍微改变了问题。 " 在这个例子中,我想 Bind(TwoWay Bind) IsLast 属性与按钮的可见性。"