How to add System.Windows.Interactivity to project?

C#Wpf

C# Problem Overview


My project missing System.Windows.Interactivity. Google says that I have to install Expression Blend, but on my other computer I have this library and I don't have Expression Blend installed. So there should be another way to obtain System.Windows.Interactivity? What should I do? (right now i don't have another computer so I can not just copy this library :)

C# Solutions


Solution 1 - C#

Although this issue is quite old, i think this is relevant news / the most recent answer: Microsoft open-sourced XAML Behaviours and posted a blog post how to update to this version: https://devblogs.microsoft.com/dotnet/open-sourcing-xaml-behaviors-for-wpf/

To save you a click, this is the main steps to migrate:

  1. Remove reference to “Microsoft.Expression.Interactions” and “System.Windows.Interactivity”
  2. Install the Microsoft.Xaml.Behaviors.Wpf NuGet package.
  3. XAML files – replace the xmlns namespaces http://schemas.microsoft.com/expression/2010/interactivity and http://schemas.microsoft.com/expression/2010/interactions with http://schemas.microsoft.com/xaml/behaviors
  4. C# files – replace the usings in c# files “Microsoft.Xaml.Interactivity” and “Microsoft.Xaml.Interactions” with “Microsoft.Xaml.Behaviors”

Solution 2 - C#

The official package for behaviors is Microsoft.Xaml.Behaviors.Wpf.

It used to be in the Blend SDK (deprecated).
See Jan's answer for more details if you need to migrate.

Solution 3 - C#

There is a new NuGet package that contains the System.Windows.Interactivity.dll that is compatible with:

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

To install Expression.Blend.Sdk, run the following command in the Package Manager Console

PM> Install-Package Expression.Blend.Sdk

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

Solution 4 - C#

The easiest way might be to get it from NuGet:

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

Solution 5 - C#

With Blend for Visual Studio, which is included in Visual Studio starting with version 2013, you can find the DLL in the following folder:

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

You will have to add the reference to the System.Windows.Interactivity.dll yourself though, unless you use Blend for Visual Studio with an existing project to add functionality that makes use of the Interactivity namespace. In that case, Blend will add the reference automatically.

Solution 6 - C#

Sometimes, when you add a new library, in introduces a clashing version of System.Windows.Interactivity.dll.

For example, the NuGet package MVVM light might require v4.2 of System.Windows.Interactivity.dll, but the NuGet package Rx-XAML might require v4.5 of System.Windows.Interactivity.dll. This will prevent the the project from working, because no matter which version of System.Windows.Interactivity.dll you include, one of the libraries will refuse to compile.

To fix, add an Assembly Binding Redirect by editing your app.config to look something like this:

<?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>
</configuration>

Don't worry about changing the PublicKeyToken, that's constant across all versions, as it depends on the name of the .dll, not the version.

Ensure that you match the newVersion in your appConfig to the actual version that you end up pointing at:

enter image description here

Solution 7 - C#

Alternative solution is to modify your current Visual Studio installation in the Visual Studio Installer

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

adding the Blend for Visual Studio SDK for .NET 'Individual component' under 'SDKs, libraries, and frameworks':

enter image description here after adding this component System.Windows.Interactivity should appear in its regular location Add Reference/Assemblies/Extensions.


It appears this would only work for VS2017 or earlier. For later versions, please refer to other answers.

Solution 8 - C#

I have had the exact same problem with a solution, that System.Windows.Interactivity was required for one of the project in Visual Studio 2019, and I tried to install Blend for Visual Studio SDK for .NET from Visual Studio 2019 Individual components, but it did not exist in it.

The consequence of that, I was not able to build the project in my solution with repetitive of following similar error on different XAML parts of the project:

> The tag 'Interaction.Behaviors' does not exist in XML namespace > 'clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity'.

Image with all errors The above mentioned errors snapshot example

The solution, the way I solved it, is by installing Microsoft Expression Blend Software Development Kit (SDK) for .NET 4 from Microsoft.

Thanks to my colleague @felza, mentioned that System.Windows.Interactivity requires this sdk, that is suppose to be located in this folder:

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

In my case it was not installed. I have had this folder C:\Program Files (x86)\Microsoft SDKs with out Expression\Blend\.NETFramework\v4.0 folder inside it.

After installing it, all errors disappeared.

Solution 9 - C#

It's in MVVM Light, get it from the MVVM Light Download Page.

Solution 10 - C#

I got it via the Prism.WPF NuGet-Package. (it includes Windows.System.Interactivity)

Solution 11 - C#

If you are working with MVVM Light you have to use the System.Windows.Interactivity Version 4.0 (the NuGet .dll wont work) that you can find under :

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

Just add this .dll manually as Reference and it should be fine.

Solution 12 - C#

I was getting the following error using Visual Studio 2019:

> System.Windows.Markup.XamlParseException: 'Could not load file or assembly 'System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)'

Our project is using packages.config and had NuGet references to MVVMLightLibs 5.4.1.1 and System.Windows.Interactivity.WPF 2.0.20525.

Guided by some of the other answers here, I realised the problem was a conflict between the version of the DLL that MVVMLight was using and the one our project was using. The solution was:

  • Remove the NuGet reference to System.Windows.Interactivity.
  • Added a Reference to packages\MvvmLightLibs.5.4.1.1\lib\net45\System.Windows.Interactivity.dll.
  • Add (in our case, update) a Binding Redirect to app.config:
<dependentAssembly>
    <assemblyIdentity name="System.Windows.Interactivity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" />
</dependentAssembly>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionOleg VazhnevView Question on Stackoverflow
Solution 1 - C#JanView Answer on Stackoverflow
Solution 2 - C#H.B.View Answer on Stackoverflow
Solution 3 - C#ThomasView Answer on Stackoverflow
Solution 4 - C#seabass2020View Answer on Stackoverflow
Solution 5 - C#pokeView Answer on Stackoverflow
Solution 6 - C#ContangoView Answer on Stackoverflow
Solution 7 - C#wondraView Answer on Stackoverflow
Solution 8 - C#Maytham FahmiView Answer on Stackoverflow
Solution 9 - C#ContangoView Answer on Stackoverflow
Solution 10 - C#Halloween_UdoView Answer on Stackoverflow
Solution 11 - C#nairda-newbView Answer on Stackoverflow
Solution 12 - C#llane12View Answer on Stackoverflow