事件处理 MVVM WinRT

4
你在metro应用中如何处理MVVM中的事件?我已经在WPF中使用了interaction类和MVVM light中的EventToCommand,但WinRT中似乎没有interaction。也没有触发器,那么我必须“使用丑陋的方式”吗?(例如,使用代码后台和

(this.DataContext as ViewModel).Command.Execute()

这个例子?)

2个回答

1
到目前为止,我发现最好的EventToCommand替代方案是附加的命令解决方案,该解决方案已在此CodeProject文章中演示。

这就是它的使用方法。

<Button Content="Test Button"
 local:AttachedCommand.RoutedEvent="PointerEntered"
 local:AttachedCommand.Command="{Binding TestCommand}"/>

另一个选择是Joost van Schaik的EventToCommand的模仿行为,但由于所需的依赖关系太重,对我来说不太适合。


不幸的是,第一个解决方案对我不起作用 - 抛出InvalidOperationException异常(在WinRT事件上动态添加或删除事件处理程序不受支持)。你能给我一些建议吗? - fex
我在这里找到了一个解决方案:http://www.guruumeditation.net/blog/events-and-mvvm-commands-in-metro。如果有人能解释一下OnEventToCommandEventChanged是如何工作的(我的意思是链接中的WindowRuntimeMarshal代码行是什么),那就太好了。 - fex

0

使用与Silverlight相同的方法附加命令,除了绑定到视图模型将使用一个接口和实现它的类。这个类应该作为数据上下文中的定位器,并在app.xaml.cs文件中声明它。如果您需要更多详细信息,请告诉我。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接