名称空间“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.Interactions
和 System.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.Interactions
和System.Windows.Interactivity
的任何项目引用。
通过 Nuget 安装更新的 Microsoft.Xaml.Behaviors.Wpf,它替换了上述引用,即打开包管理器控制台并键入:
Install-Package Microsoft.Xaml.Behaviors.Wpf
项目名称
在 Xaml 文件中,将 xmlns 命名空间 http://schemas.microsoft.com/expression/2010/interactivity
和 http://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.1
和 Microsoft 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.Interactions
和 System.Windows.Interactivity
。然后我安装了 Hansan Pringle 的 Nuget 包 Microsoft.SDK.Expression.Blend
。这是安装缺少的引用。
【讨论】:
【参考方案5】:我遇到了同样的问题。我所做的是:
-
删除
Microsoft.Expression.Interactions
和
System.Windows.Interactivity
来自 Visual Studio 中的项目,同时保留 xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
命名空间。
在 Blend 中打开同一个项目。
添加正确的 .net 版本
Microsoft.Expression.Interactions
和
System.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”的主要内容,如果未能解决你的问题,请参考以下文章