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

Posted

技术标签:

【中文标题】名称空间“http://schemas.microsoft.com/expression/2010/interactivity”中不存在名称“Interaction”【英文标题】:The name "Interaction" does not exist in the namespace "http://schemas.microsoft.com/expression/2010/interactivity" 【发布时间】:2014-01-11 16:43:29 【问题描述】:

我在几个项目中使用了 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 一起使用

【问题讨论】:

在我的项目中,我使用这个命名空间 xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 这是什么时候开始的?什么时候卸载VS2010?或者当您卸载 Blend SDK 时? 我没有卸载任何东西,我只是安装了VS2012 prof。但是自从我安装了VS2012 【参考方案1】:

    删除对Microsoft.Expression.InteractionsSystem.Windows.Interactivity 的任何项目引用。

    通过 Nuget 安装更新的 Microsoft.Xaml.Behaviors.Wpf,它替换了上述引用,即打开包管理器控制台并键入:

    Install-Package Microsoft.Xaml.Behaviors.Wpf 项目名称

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

【讨论】:

您的答案应该在顶部。这是2020年最好的。 只是添加,您还需要将所有使用引用从交互/交互更改为答案中提到的行为。 我这样做了,在本地一切都很好,但我仍然只在 Azure DevOps 构建期间收到(几乎)相同的错误。为什么???错误 MC3074:XML 命名空间“schemas.microsoft.com/xaml/behaviors”中不存在标记“Interaction.Triggers”【参考方案2】:

如果您首先遇到此问题,请仔细检查您是否同时引用了Microsoft.Expression.Interactions AND System.Windows.Interactivity

我只是想警告一下,我尝试按照 PitAttack76 在他的回答中写的所有操作,但它并没有为我卸载 Blend。它只是卸载了一些部件,所以当我重新启动计算机并想在 Blend 中打开项目时,它会写入一条错误消息,如 this thread。比我必须安装 .NET framework 4.5.1Microsoft Build Tools 2013 才能使 Blend 重新开始工作。尽管如此,它对我没有任何帮助 - 我的问题是,我的参考文献中只有 Microsoft.Expression.Interactions

【讨论】:

我发现问题已通过添加 System.Windows.Interactivity 为我解决。【参考方案3】:

好的,我已经解决了。 当我安装 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>

【讨论】:

【参考方案4】:

我删除了缺少的引用 Microsoft.Expression.InteractionsSystem.Windows.Interactivity。然后我安装了 Hansan PringleNugetMicrosoft.SDK.Expression.Blend。这是安装缺少的引用。

【讨论】:

【参考方案5】:

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

    删除Microsoft.Expression.InteractionsSystem.Windows.Interactivity 来自 Visual Studio 中的项目,同时保留 xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 命名空间。 在 Blend 中打开同一个项目。 添加正确的 .net 版本 Microsoft.Expression.InteractionsSystem.Windows.Interactivity 回到 Blend(在我的情况下是 4.5)。

【讨论】:

只需删除它们并在VS中再次添加它们就为我解决了。我认为你是对的 - 这是一个不正确的版本。 我没有在 Blend 中打开,但确实删除了它们并添加了每个的最新版本 - 为我解决了它【参考方案6】:

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

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

安装包:

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

【讨论】:

【参考方案7】:

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

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

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

【讨论】:

此实现已过时。见我上面的回答。【参考方案8】:

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

【讨论】:

您是如何将版本从 4 更改为 4.5 的?这似乎也是我遇到的问题。 在 Visual Studio 解决方案资源管理器中右键单击项目,然后单击“属性”。 我做到了,但没有奏效。我的问题是我没有对 Blend SDK 的引用。对于尚未找到解决方案的其他人...打开 VS 安装程序并确保已安装 Blend SDK,当您执行此操作时,您将获得 4.5 版本的引用,而无需修改配置文件或一些其他文件。未能安装 Blend SDK 意味着您将无法将其从 4 更改为 4.5。【参考方案9】:

正如SQL and Java Learner在评论中所说:

打开 VS 安装程序并确保已安装 Blend SDK,当 你这样做,你将有一个 4.5 版本的参考,而无需 修改配置文件或其他文件。未能拥有 已安装 Blend SDK 意味着您将无法将其从 4 更改为 4.5.

这对我有用。

【讨论】:

【参考方案10】:

也许它可以帮助某人,这个问题可以通过安装“Blend for Visual Studio SDK for .NET”组件来解决,该组件可以在 Visual Studio 2017 安装中找到:

如果您使用的是 VS2019,但有可用的 VS2017 许可证,则不需要任何内容​​。只需安装 VS2017(核心)和这个单独的组件即可。

【讨论】:

以上是关于名称空间“http://schemas.microsoft.com/expression/2010/interactivity”中不存在名称“Interaction”的主要内容,如果未能解决你的问题,请参考以下文章

WPF防止界面卡死并显示加载中效果

ContextMenu 中 MenuItem 的 ElementName 绑定

WPF 跟随拖动改变的三次贝塞尔曲线思路

名称空间

名称空间与作用域

python 14 名称空间与作用域