如何实现MVVM的函数调用?

问题描述:

MVVM似乎只适用于数据绑定。如何实现MVVM的函数调用?

如果我想调用在xaml中创建的usercontrol的函数,那么该怎么办?

例如,我做了一个图形绘图usercontrol,其中有一个函数AlignTopEdge(),它将所有选定的图形与顶边对齐。

我有一个名为AlignTopEdgeButton的按钮,并希望将此按钮命令绑定到图形绘图usercontrol的AlignTopEdge()函数。

我该怎么做?

谢谢。

我会在代码隐藏视图中执行此操作,因为它是视图特定的逻辑。您的ViewModel不应该知道/关心对齐UI对象,除非它与您的应用程序的业务逻辑有某种关联。

所以你的情况,我只想处理按钮的Click事件的代码隐藏,找到用户控件,并调用myUserControl.AlignTopEdge()

对于attached property这是一个很好的用例。例如您可以拥有一个附加属性,该属性具有GraphicalControl属性,您可以将其设置为XAML中用户控件的实例。

在属性GraphicalControl的设置器中,您可以分配按钮实例的Click事件,然后调用该方法。

+0

太谢谢你了。但我不明白。 你的意思是将整个GraphicalControl实例绑定到ViewModel? – user1184598 2012-02-03 01:51:13

+0

我怎样才能知道附加属性代码中的GraphicalControl的实例? – user1184598 2012-02-03 02:03:45