如何将System.Windows.Interactivity添加到项目中?

时间:2011-12-02 17:27:45

标签: c# wpf

我的项目缺少System.Windows.Interactivity。谷歌说我必须安装Expression Blend,但在我的另一台电脑上我有这个库,我没有安装Expression Blend。那么应该有另一种获取System.Windows.Interactivity的方法吗?我该怎么办? (现在我没有另外一台电脑,所以我不能只复制这个库:)。

11 个答案:

答案 0 :(得分:54)

有一个新的NuGet包,其中包含与以下内容兼容的System.Windows.Interactivity.dll:

  • WPF 4.0,4.5
  • Silverligt 4.0,5.0
  • Windows Phone 7.1,8.0
  • Windows Store 8,8.1

要安装Expression.Blend.Sdk,请在程序包管理器控制台中运行以下命令

PM> Install-Package Expression.Blend.Sdk

http://www.nuget.org/packages/Expression.Blend.Sdk/

答案 1 :(得分:53)

在Blend SDK中,有一个NuGet package或者你可以得到它here(过时)。

答案 2 :(得分:22)

最简单的方法可能是从NuGet获取它:

http://www.nuget.org/packages/System.Windows.Interactivity.WPF/

答案 3 :(得分:18)

使用 Blend for Visual Studio (包含在从2013版开始的Visual Studio中),您可以在以下文件夹中找到DLL:

C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.5\Libraries

您必须自己添加对System.Windows.Interactivity.dll的引用,除非您使用Blend for Visual Studio与现有项目添加使用Interactivity命名空间的功能。在这种情况下,Blend将自动添加引用。

答案 4 :(得分:17)

有时,当您添加新库时,会引入碰撞版本的System.Windows.Interactivity.dll

例如,NuGet包MVVM light可能需要System.Windows.Interactivity.dll的v4.2,但NuGet包Rx-XAML可能需要System.Windows.Interactivity.dll的v4.5。这将阻止项目工作,因为无论您包含哪个版本的System.Windows.Interactivity.dll,其中一个库都将拒绝编译。

要修复此问题,请通过修改app.config来添加程序集绑定重定向,如下所示:

<?xml version="1.0"?>
<configuration>
<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.Windows.Interactivity"
                        publicKeyToken="31bf3856ad364e35"
                        culture="neutral"/>
      <bindingRedirect oldVersion="4.0.0.0"
                       newVersion="4.5.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup>
<appSettings>
  <add key="TestKey" value="true"/>
</appSettings>

不要担心在所有版本中更改PublicKeyToken,这是常量,因为它取决于.dll的名称,而不是版本。

确保您将newVersion中的appConfig与最终指向的实际版本相匹配:

enter image description here

答案 5 :(得分:11)

另一种解决方案是在Visual Studio安装程序中修改当前的Visual Studio安装

Win + R %ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vs_installer.exe

在“ SDK,库和框架”下添加Blend for Visual Studio SDK for .NET“单个组件”:

enter image description here 添加此组件后,System.Windows.Interactivity应该出现在其常规位置Add Reference/Assemblies/Extensions中。

答案 6 :(得分:5)

我在解决方案中遇到了完全相同的问题,即 Visual Studio 2019 中的一个项目需要 System.Windows.Interactivity,我尝试从 Visual Studio 2019 单个组件安装 Blend for Visual Studio SDK for .NET,但是它不存在于其中。

后果,我无法在我的解决方案中构建项目,并在项目的不同 XAML 部分重复遵循类似错误:

<块引用>

XML 命名空间中不存在“Interaction.Behaviors”标签 'clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity'。

Image with all errors 上面提到的错误快照示例

解决方案,我的解决方法是安装来自 Microsoft 的 Microsoft Expression Blend Software Development Kit (SDK) for .NET 4

感谢我的同事 @felza,提到 System.Windows.Interactivity 需要此 sdk,假设位于此文件夹中:

C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.0

就我而言,它没有安装。我有这个文件夹 C:\Program Files (x86)\Microsoft SDKs,里面没有 Expression\Blend\.NETFramework\v4.0 文件夹。

安装后,所有错误都消失了。

答案 7 :(得分:2)

在MVVM Light中,从MVVM Light Download Page获取它。

答案 8 :(得分:1)

我是通过Prism.WPF NuGet-Package获得的。 (它包括Windows.System.Interactivity)

答案 9 :(得分:0)

尽管此问题已经很久了,但我认为这是相关新闻/最新答案:Microsoft开源XAML行为,并在博客中发布了如何更新到此版本:https://devblogs.microsoft.com/dotnet/open-sourcing-xaml-behaviors-for-wpf/

要保存您的点击,这是迁移的主要步骤:

  1. 删除对“ Microsoft.Expression.Interactions”和“ System.Windows.Interactivity”的引用
  2. 安装“ Microsoft.Xaml.Behaviors.Wpf” NuGet程序包。
  3. XAML文件–用http://schemas.microsoft.com/expression/2010/interactivity替换xmlns命名空间http://schemas.microsoft.com/expression/2010/interactionshttp://schemas.microsoft.com/xaml/behaviors
  4. C#文件–用“ Microsoft.Xaml.Behaviors”替换c#文件“ Microsoft.Xaml.Interactivity”和“ Microsoft.Xaml.Interactions”中的用法

答案 10 :(得分:0)

如果使用的是MVVM Light,则必须使用System.Windows.Interactivity Version 4.0(NuGet .dll无法正常工作),您可以在以下位置找到它:

PathToProjectFolder\Software\packages\MvvmLightLibs.5.4.1.1\lib\net45\System.Windows.Interactivity.dll

只需手动添加此.dll作为参考,就可以了。