2013-01-02 54 views
4

如何处理城域应用程序中MVVM中的事件?我使用WPF中的MVVM light中的交互类和EventToCommand,但似乎在WinRT中没有交互。也没有触发器,所以我必须“使用丑陋的方式”? (后面代码和事件处理MVVM WinRT

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

例如?)

回答

1

到目前为止我发现EventToCommand最好的选择是具有BEEM在此CodeProject article展示了连接命令溶液。

这就是它的使用方法。

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

另一种方法是mimic of the EventToCommand行为通过Joost的面包车范斯海克但对我来说给需要的依赖是太重了。

+0

不幸的是,第一个解决方案对我不起作用 - 引发了InvalidOperationException(WinRT事件不支持动态添加或删除事件处理程序)。你能给我一些建议吗? – fex

+0

我在这里找到了一个解决方案:http://www.guruumeditation.net/blog/events-and-mvvm-commands-in-metro。如果有人能够解释一下这个OnEventToCommandEventChanged是如何工作的(我的意思是什么和链接中的WindowRuntimeMarshal代码行是什么),那将会很棒。 – fex

0

使用相同的方法附加命令,除了绑定到视图模型之外,我们在Silverlight中执行的操作将使用接口和实现它的类。该类应该用作datacontext中的定位器,并在app.xaml.cs文件中声明它。如果您需要更多详细信息,请告诉我。