名称“交互”在名称空间“http://schemas.microsoft.com/expression/2010/interactivity”中不存在

时间:2013-12-23 12:48:57

标签: c# wpf visual-studio

我在几个项目中使用了System.Windows.Interactivity DLL而没有任何问题。 现在在我的最新项目中,我无法让它发挥作用。我总是收到以下错误:

名称空间“http://schemas.microsoft.com/expression/2010/interactivity”中不存在名称“交互”。

<i:Interaction.Triggers>
    <EventTrigger EventName="SelectionChanged">
        <i:InvokeCommandAction Command="{Binding AddSelectLocomotifCommand}"
            CommandParameter="{Binding SelectedItem, ElementName=listBoxLocs}" />
    </EventTrigger>
</i:Interaction.Triggers>

名称空间:

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"

Microsoft.Expression.InteractionsSystem.Windows.Interactivity都添加到项目引用中,我甚至将DLL复制到项目中的文件夹中。

知道这是怎么来的吗?我使用VS2012和.NET 4.5

10 个答案:

答案 0 :(得分:48)

如果您在其他所有问题之前遇到此问题,请仔细检查是否同时提及Microsoft.Expression.Interactions AND System.Windows.Interactivity

我只是想提醒一下,我试图像PitAttack76那样写下他的回答并且它没有为我卸载Blend。它只是卸载了一些部件,因此当我重新启动计算机并想要在Blend中打开项目时,它会在this thread中写入错误消息。我必须安装.NET framework 4.5.1Microsoft Build Tools 2013才能再次开始工作。然而,它并没有以任何方式帮助我 - 我的问题是,我的参考资料中只有Microsoft.Expression.Interactions

答案 1 :(得分:19)

  1. 删除对Microsoft.Expression.InteractionsSystem.Windows.Interactivity的所有项目引用。

  2. 通过Nuget安装更新的Microsoft.Xaml.Behaviors.Wpf,以替换上述引用,即打开Package Manager控制台并键入:

    Install-Package Microsoft.Xaml.Behaviors.Wpf ProjectName

  3. 在Xaml文件中,将XMLns命名空间http://schemas.microsoft.com/expression/2010/interactivityhttp://schemas.microsoft.com/expression/2010/interactions替换为http://schemas.microsoft.com/xaml/behaviors

答案 2 :(得分:8)

好的,我已经修好了。 当我安装Visual Studio 2012 Professional(带Blend)时,我可以选择安装Blend for Visual Studio。我认为这可能导致问题所以我再次打开安装程序,选择修改并取消选中Blend for Visual Studio选项。

猜猜看,它有效。没有更多的互动错误。这现在再次正常工作! 实际问题是什么,我不知道如果有人知道,请告诉我:)

<i:Interaction.Triggers>
    <i:EventTrigger EventName="MouseDoubleClick">
        <i:InvokeCommandAction Command="{Binding AddSelectLocomotifCommand}"
                                                     CommandParameter="{Binding SelectedItem, ElementName=listBoxLocs}" />
    </i:EventTrigger>
</i:Interaction.Triggers>

答案 3 :(得分:4)

我遇到了同样的问题。我做的是:

  1. 删除public static void main(String[] args) { for (int i = 1; i <= 5; i++) { for (int j = 1; j <= 5; j++) { if(i==1||j==1||i==5||j==5){ System.out.print("*"); }else { System.out.println(" "); } } } } 和 来自Visual Studio中项目的Microsoft.Expression.Interactions,同时保留System.Windows.Interactivity命名空间。
  2. 在Blend中打开相同的项目。
  3. 添加正确的.net版本 xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"Microsoft.Expression.Interactions回到Blend(在我看来是这样的 4.5)。

答案 4 :(得分:1)

我删除了缺少的引用Microsoft.Expression.Interactions和System.Windows.Interactivity。然后我安装了Hansan Pringle的Nuget包Microsoft.SDK.Expression.Blend。这是安装缺少的引用。

答案 5 :(得分:1)

我还通过手动删除 2 个引用解决了这个愚蠢的问题(我没有在我的机器上也没有在构建机器上修改任何安装):

  • Microsoft.Expression.Interactions
  • System.Windows.Interactivity 来自

安装包: Blend

将此差异推送到构建管道:

diff

答案 6 :(得分:0)

我遇到了这个问题,因为我引用了System.Windows.Interactivity的4.5版本版本,但正在.Net 4中构建我的项目

答案 7 :(得分:0)

SQL and Java Learner 在评论中所述:

  

打开VS Installer并确保在安装Blend SDK时   您执行此操作后,无需任何操作即可参考4.5版本   修改配置文件或其他文件。未能拥有   安装了Blend SDK意味着您将无法从4更改为   4.5。

这对我有用。

答案 8 :(得分:0)

我想更新这个问题,因为我发现了一个非常简单的解决方案,不确定在最初提出该问题时是否给出了解决方案。 现在,您可以下载一个nuget软件包,它会自动适合您的解决方案。

该程序包称为“ Expression.Blend.Sdk”(Microsoft发行),它包含System.Windows.Interactivity版本,其中包括具有Command属性的InvokeCommandAction版本。

很容易想到应该安装“ Blend.Interactivity.Wpf”(由Microsoft),但是此nuget包包含另一个实现(我想),该实现不提供具有Command属性的InvokeCommandAction。

答案 9 :(得分:0)

也许可以对某人有所帮助,可以通过安装Visual Studio 2017安装中可以找到的“ .NET的Visual Studio SDK混合版”组件来解决此问题:

enter image description here

如果您使用的是VS2019,但拥有VS2017许可证,则无需任何操作。只需安装VS2017(核心)以及此单个组件即可。