5

我无法在我的 Windows Phone 8.1 应用程序中使用 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>

我收到以下错误:

  • 成员“触发器”无法识别或无法访问。
  • XML 命名空间“clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity”中的未知类型“EventTrigger”
  • 错误 2 在“交互”类型中找不到可附加属性“触发器”。...

有人能帮助我吗?

4

3 回答 3

4

您的目标是 Silverlight 还是 WinRT(通用应用程序)类型的 Windows Phone 8.1?

如果您选择了第二个选项,那么在这篇文中, MVVM Light 作者解释了缺乏对 EventToCommand 的支持——基本上在 WinRT 中已经有一种类似于 EventToCommand 的机制——行为。

于 2014-04-29T10:17:50.690 回答
3

视窗电话 8.1

Windows 8.1 行为 SDK:如何使用 InvokeAction 和 InputConverter 将参数传递给命令

Microsoft 开发了它自己的 EventToCommand 功能。它位于行为 SDK 中。stackoverflow 上有人告诉通过 Nuget 获取此 SDK。如果在 NuGet 中找不到包 - 将其放入Add reference dialog.

在此处输入图像描述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>
于 2014-12-22T10:16:41.640 回答
1

当升级我的 WP8.0 应用程序以使用 MVVMLight 5.0+ 禁用 EventToCommand 行为时,我对解决方案的搜索将我带到了这篇文,该博文提供了用于实现自定义命令操作的源代码,该操作将事件 args 作为参数传递。实施代码使我的应用程序恢复正常!!

希望这可以帮助你:D

于 2014-12-18T13:25:22.127 回答