可以在代码中使用Blend SDK类,但不能使用XAML(Prism Desktop)

本文关键字:但不能 XAML Desktop Prism SDK 代码 Blend | 更新日期: 2023-09-27 18:29:41

我正在尝试使用绑定到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();

它编译和运行良好。这怎么可能呢?

可以在代码中使用Blend SDK类,但不能使用XAML(Prism Desktop)

尝试删除并重新添加对Microsoft.Expression.Interactions.dll*.Interactivity.dll 的引用

这件事曾经发生在我身上,但我不知道为什么。这就是我解决问题的方法。

相关文章: