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

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

它在Blend SDK中,有一个nu-get包 ,或者你可以在这里得到它(过时)。

有一个新的NuGet包含System.Windows.Interactivity.dll是兼容的:

  • WPF 4.0,4.5
  • Silverligt 4.0,5.0
  • Windows Phone 7.1,8.0
  • Windowsapp store8,8.1

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

PM> Install-Package Expression.Blend.Sdk

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

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

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

有时,当你添加一个新的库时,引入了一个冲突版本的System.Windows.Interactivity.dll

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

要解决这个问题,通过编辑你的app.config来添加一个Assembly Binding Redirect,看起来像这样:

 <?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与您最终指向的实际版本进行匹配:

在这里输入图像说明

对于从Visual Studio 2013开始的Visual Studio包含的Blend ,您可以在以下文件夹中find该DLL:

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

除非您使用Blend for Visual Studio和现有项目来添加使用Interactivity名称空间的function,否则必须自己添加对System.Windows.Interactivity.dll的引用。 在这种情况下,Blend会自动添加参考。

它在MVVM Light中,从MVVM Light下载页面中获取 。

我通过Prism.WPF NuGet包得到它。 (它包括Windows.System.Interactivity)