Prism InvokeCommandAction 可以与 Microsoft.Xaml.Behaviors.Wpf 一起使用吗
Can Prism InvokeCommandAction be used with Microsoft.Xaml.Behaviors.Wpf
我遇到了这个错误
'InvokeCommandAction' cannot be added to a collection or dictionary of type 'TriggerActionCollection'
Xaml 文件如下
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:prismI="clr-namespace:Prism.Interactivity;assembly=Prism.Wpf"
<i:Interaction.Triggers>
<i:EventTrigger EventName="PreviewKeyDown">
<prismI:InvokeCommandAction Command="{Binding testCmd}"/> ==> this line was error
</i:EventTrigger>
</i:Interaction.Triggers>
NuGet 安装包:
- Microsoft.Xaml.Behaviors.Wpf 1.1.19
- Prism.Unity 7.2.0.1422
我不想使用 MVVMLight 并自己编写 behaviour 以在 i:Interaction.Behavious
中使用
Prism 7.2.0.1422 带来了它自己的(旧)版本的 XAML 行为,而您正在混合使用新的 nuget 包和旧版本,这可能是问题所在。你试过使用
<i:InvokeCommandAction Command="{Binding testCmd}"/>
因此将 prismI
替换为 i
?
Prism 的 interactitvity 命名空间中的类型基于 System.Windows.Interactivity
程序集。它随 Blend for Visual Studio 一起提供。如果你安装它,你可以在下面的路径中找到程序集。 Prism 不包含这些组件,它只提供基于它的类型。
C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.5\Libraries\System.Windows.Interactivity.dll
您也可以安装 NuGet 包 System.Windows.Interactivity.WPF,但是这个包不是官方的,所以我不推荐它.
要使用 XAML 中的旧程序集,只需将命名空间声明替换为这个。
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
Microsoft.Xaml.Behaviors.Wpf 包是 2018 年 12 月发布的开源变体。由于它附带具有不同命名空间的不同程序集,因此它与基于的类型不兼容Blend SDK 程序集。
好消息是,Prism 8 也将使用较新的软件包。
我遇到了这个错误
'InvokeCommandAction' cannot be added to a collection or dictionary of type 'TriggerActionCollection'
Xaml 文件如下
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:prismI="clr-namespace:Prism.Interactivity;assembly=Prism.Wpf"
<i:Interaction.Triggers>
<i:EventTrigger EventName="PreviewKeyDown">
<prismI:InvokeCommandAction Command="{Binding testCmd}"/> ==> this line was error
</i:EventTrigger>
</i:Interaction.Triggers>
NuGet 安装包:
- Microsoft.Xaml.Behaviors.Wpf 1.1.19
- Prism.Unity 7.2.0.1422
我不想使用 MVVMLight 并自己编写 behaviour 以在 i:Interaction.Behavious
Prism 7.2.0.1422 带来了它自己的(旧)版本的 XAML 行为,而您正在混合使用新的 nuget 包和旧版本,这可能是问题所在。你试过使用
<i:InvokeCommandAction Command="{Binding testCmd}"/>
因此将 prismI
替换为 i
?
Prism 的 interactitvity 命名空间中的类型基于 System.Windows.Interactivity
程序集。它随 Blend for Visual Studio 一起提供。如果你安装它,你可以在下面的路径中找到程序集。 Prism 不包含这些组件,它只提供基于它的类型。
C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.5\Libraries\System.Windows.Interactivity.dll
您也可以安装 NuGet 包 System.Windows.Interactivity.WPF,但是这个包不是官方的,所以我不推荐它.
要使用 XAML 中的旧程序集,只需将命名空间声明替换为这个。
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
Microsoft.Xaml.Behaviors.Wpf 包是 2018 年 12 月发布的开源变体。由于它附带具有不同命名空间的不同程序集,因此它与基于的类型不兼容Blend SDK 程序集。
好消息是,Prism 8 也将使用较新的软件包。