我正在尝试使用CallMethodAction
Prism 库示例和文档中的方法绑定到 WPF 窗口中的控件。出于某种原因,XAML 编译器拒绝承认Microsoft.Expression.Interactivity.Core
命名空间甚至存在。但是,我在该视图的代码隐藏中使用相同命名空间中的相同类没有问题。
在 XAML 中,我尝试了两种规范命名空间:
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ic="http://schemas.microsoft.com/expression/2010/interactions"
以及 CLR 命名空间:
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ic="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions"
命名空间 Intellisense 弹出式浏览器显示第一个命名空间,但不显示第二个命名空间的 XML 和 CLR 命名空间。在任何一种情况下,以下 XAML 都无法编译:
<Button HorizontalAlignment="Right" Content="Cancel">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<ic:CallMethodAction />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
找到标签没有问题Interaction.Triggers
,但抱怨CallMethodAction
标签在指定的命名空间中不存在。事实上,ic
命名空间标签上的智能感知就像没有这样的命名空间一样。但是,我没有收到找不到 CLR 命名空间的错误,如果我尝试使用不存在的命名空间,我会这样做。
但是,在此窗口的构造函数中,我可以这样做:
var x = new Microsoft.Expression.Interactivity.Core.CallMethodAction();
编译并运行良好。这怎么可能呢?