我需要为WinRT应用程序中的列表和组合框实现选择更改事件。我使用的是MvvmCross,但AFAIK这是一个WinRT而不是Mvx特定的问题。 System.Windows.Interactivity不适用于WinRT应用程序,因此我无法使用基于i:Interaction.Triggers的技术。我希望以真正的MVVM方式实现绑定,而无需切换到代码隐藏,因此我可以在其他平台上尽可能多地重用。在WinRT应用程序中实现它的合理方法是什么?我没有在MvvmCross样本中找到任何例子。
提前致谢
答案 0 :(得分:5)
如果您正在使用MvvmCross在WinRT中查找行为,现在可以使用Windows.UI.Interactivity nuget包(https://nuget.org/packages/Windows.UI.Interactivity)。
当与MvvmCross一起使用时,我制作了一个副本,对现有的MvxEventToCommand类进行了一些小改动(继承自TriggerAction(FrameworkElement)而不是TriggerAction(DependencyObject))。奇迹般有效。
答案 1 :(得分:2)
我认为这是Mvvm在WinRT上的一般问题
由于某些未知原因,Microsoft未在WinRT中包含行为。 (有些理论说他们没时间用完了,他们不想因为Expression Blend的变化而等等......)
有很多关于如何解决这个问题的博文和文章 - 其中大部分内容都围绕着Joost van Schaik的优秀图书馆:
我自己没有这样做 - 我倾向于不使用SelectionChanged,而是将ICommand
放在每个ListItem中。如果你让Joost的图书馆工作,我很乐意看到一个样本:)