0

我有 .dotcontrol,我需要使用来自控件的数据调用视图模型中的函数。

该方法不能在控件中,因为它需要仅在视图模型中可用的外观。所以我为 viemodel 声明了接口并实现了这个功能。

但如果我这样称呼它:

<dot:Button Click="{controlCommand: ViewModelFunction(ControlProperty)}" Text="CHECK CODE"/> 

它会导致以下错误:

当前上下文中不存在名称“ViewModelFunction”。

所以我试着用命令来调用它:

<dot:Button Click="{command: ViewModelFunction(ControlProperty)}" Text="CHECK CODE"/>

这看起来不错,但如果我在一页上有两个控件,它就不起作用。因为该方法是使用首次使用控件的数据调用的。无法识别控件的其他用途的数据。

如何使用控件的数据调用视图模型的方法?

4

1 回答 1

1

controlCommand不起作用,因为是ViewModelFunction在 ViewModel 上声明的,并且controlCommand默认绑定上下文是控件。您可以使用该_this参数来访问视图模型的方法和属性。所以它应该看起来像:

<dot:Button Click="{controlCommand: _this.ViewModelFunction(ControlProperty)}" Text="CHECK CODE"/>

顺便说一句,我们正计划消除命令绑定的这种限制,因此第二种方法有望在未来发挥作用。

于 2016-11-03T14:34:35.267 回答