如何處理城域應用程序中MVVM中的事件?我使用WPF中的MVVM light中的交互類和EventToCommand,但似乎在WinRT中沒有交互。也沒有觸發器,所以我必須「使用醜陋的方式」? (後面代碼和事件處理MVVM WinRT
(this.DataContext as ViewModel).Command.Execute()
例如?)
如何處理城域應用程序中MVVM中的事件?我使用WPF中的MVVM light中的交互類和EventToCommand,但似乎在WinRT中沒有交互。也沒有觸發器,所以我必須「使用醜陋的方式」? (後面代碼和事件處理MVVM WinRT
(this.DataContext as ViewModel).Command.Execute()
例如?)
到目前爲止我發現EventToCommand最好的選擇是具有BEEM在此CodeProject article展示了連接命令溶液。
這就是它的使用方法。
<Button Content="Test Button"
local:AttachedCommand.RoutedEvent="PointerEntered"
local:AttachedCommand.Command="{Binding TestCommand}"/>
另一種方法是mimic of the EventToCommand行爲通過Joost的麪包車範斯海克但對我來說給需要的依賴是太重了。
使用相同的方法附加命令,除了綁定到視圖模型之外,我們在Silverlight中執行的操作將使用接口和實現它的類。該類應該用作datacontext中的定位器,並在app.xaml.cs文件中聲明它。如果您需要更多詳細信息,請告訴我。
不幸的是,第一個解決方案對我不起作用 - 引發了InvalidOperationException(WinRT事件不支持動態添加或刪除事件處理程序)。你能給我一些建議嗎? – fex
我在這裏找到了一個解決方案:http://www.guruumeditation.net/blog/events-and-mvvm-commands-in-metro。如果有人能夠解釋一下這個OnEventToCommandEventChanged是如何工作的(我的意思是什麼和鏈接中的WindowRuntimeMarshal代碼行是什麼),那將會很棒。 – fex