我无法在Windows Phone 8.1 App中使用EventToCommand。
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WP8"
我也尝试使用assembly = GalaSoft.MvvmLight.Extras.WP81 ......
<controls:PivotItem Name="pivotItem">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<cmd:EventToCommand Command="{Binding SelectServiceCommand}"
CommandParameter="{Binding SelectedIndex, ElementName=pivotItem}"/>
</i:EventTrigger>
<!-- other stuff -->
</i:Interaction.Triggers>
我得到以下错误:
有人能帮助我吗?
答案 0 :(得分:4)
您是针对Silverlight还是WinRT(Universal Apps)类型的Windows Phone 8.1?
如果你选择了第二个选项,那么在这个blog post MVVM Light中,作者解释说缺少对EventToCommand的支持 - 基本上在WinRT中,已经有一个类似于EventToCommand - Behaviors的机制。
答案 1 :(得分:3)
Windows Phone 8.1
Windows 8.1 Behavior SDK: How to use InvokeAction with InputConverter to pass arguments to a Command
微软开发了自己的EventToCommand功能。它位于Behaviors SDK中。 stackoverflow上的某个人告诉他们通过Nuget获取此SDK。如果您无法在NuGet中找到该包,请在Add reference dialog
。
(我的&#34;添加引用&#34;对话框可能因Productivity Power Tools
扩展名而与原版不同)
以下是简单用法的示例:
<ListBox ItemsSource="{Binding Persons, Mode=OneWay}"
SelectedItem="{Binding SelectedPerson, Mode=TwoWay}">
<interactivity:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="SelectionChanged">
<core:InvokeCommandAction Command="{Binding DisplayPersonCommand}" />
</core:EventTriggerBehavior>
</interactivity:Interaction.Behaviors>
</ListBox>
答案 2 :(得分:1)
当升级我的WP8.0应用程序以使用MVVMLight 5.0+禁用EventToCommand行为时,我搜索解决方案将我带到了blog post,它提供了用于实现将传递事件args的自定义命令操作的源代码作为参数。实现代码将我的应用程序恢复到正常工作状态!!
希望这会帮助你:D