如何实现MVVM的函数调用?
问题描述:
MVVM似乎只适用于数据绑定。如何实现MVVM的函数调用?
如果我想调用在xaml中创建的usercontrol的函数,那么该怎么办?
例如,我做了一个图形绘图usercontrol,其中有一个函数AlignTopEdge(),它将所有选定的图形与顶边对齐。
我有一个名为AlignTopEdgeButton的按钮,并希望将此按钮命令绑定到图形绘图usercontrol的AlignTopEdge()函数。
我该怎么做?
谢谢。
答
我会在代码隐藏视图中执行此操作,因为它是视图特定的逻辑。您的ViewModel不应该知道/关心对齐UI对象,除非它与您的应用程序的业务逻辑有某种关联。
所以你的情况,我只想处理按钮的Click事件的代码隐藏,找到用户控件,并调用myUserControl.AlignTopEdge()
答
对于attached property这是一个很好的用例。例如您可以拥有一个附加属性,该属性具有GraphicalControl
属性,您可以将其设置为XAML中用户控件的实例。
在属性GraphicalControl
的设置器中,您可以分配按钮实例的Click
事件,然后调用该方法。
太谢谢你了。但我不明白。 你的意思是将整个GraphicalControl实例绑定到ViewModel? – user1184598 2012-02-03 01:51:13
我怎样才能知道附加属性代码中的GraphicalControl的实例? – user1184598 2012-02-03 02:03:45