Windows Phone 8.1 - MVVMLight - 为什么EventToCommad不起作用?

时间:2014-04-29 09:26:09

标签: windows-phone-8 mvvm-light windows-phone-8.1 eventtocommand

我无法在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>

我得到以下错误:

  • 会员&#34;触发&#34;无法识别或无法访问。
  • 未知类型&#39; EventTrigger&#39;在XML命名空间&#39; clr-namespace:System.Windows.Interactivity; assembly = System.Windows.Interactivity&#39;
  • 错误2可附加属性&#39;触发器&#39;未在类型&#39;互动&#39;中找到。 ...

有人能帮助我吗?

3 个答案:

答案 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

中获取

enter image description here (我的&#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