【问题标题】:The name "Interaction" does not exist in the namespace "http://schemas.microsoft.com/expression/2010/interactivity"名称空间“http://schemas.microsoft.com/expression/2010/interactivity”中不存在名称“Interaction”
【发布时间】: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

标签: c# wpf visual-studio


【解决方案1】:
  1. 删除对Microsoft.Expression.InteractionsSystem.Windows.Interactivity 的任何项目引用。

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

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

  3. 在 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】:

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

      1. 删除Microsoft.Expression.InteractionsSystem.Windows.Interactivity 来自 Visual Studio 中的项目,同时保留 xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 命名空间。
      2. 在 Blend 中打开同一个项目。
      3. 添加正确的 .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(核心)和这个单独的组件即可。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-12-29
            • 2016-11-06
            • 1970-01-01
            • 2013-02-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多