我正在尝试使用绑定到WPF窗口中的控件的CallMethodAction,使用Prism库示例和文档中的方法.出于某种原因,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命名空间标记上的Intellisense就好像没有这样的命名空间一样.但是,我没有得到无法找到CLR命名空间的错误,如果我尝试使用不存在的命名空间,我会这样做.
但是,在这个窗口的构造函数中,我可以这样做:
var x = new Microsoft.Expression.Interactivity.Core.CallMethodAction();
编译并运行良好.这怎么可能呢?
解决方法:
尝试删除并重新添加对Microsoft.Expression.Interactions.dll和* .Interactivity.dll的引用
它发生在我身上,但我不知道为什么.这就是我解决它的方式.