¿Cómo agregar System.Windows.Interactivity al proyecto?


107

Falta mi proyecto System.Windows.Interactivity. Google dice que tengo que instalar Expression Blend, pero en mi otra computadora tengo esta biblioteca y no tengo Expression Blend instalado. Entonces, ¿debería haber otra forma de obtenerlo System.Windows.Interactivity? ¿Qué tengo que hacer? (ahora mismo no tengo otra computadora, así que no puedo simplemente copiar esta biblioteca :)

Respuestas:


92

El paquete oficial de comportamientos es Microsoft.Xaml.Behaviors.Wpf.

Solía ​​estar en el SDK de Blend y está obsoleto.
Consulte la respuesta de Jan para obtener más detalles si necesita migrar.


2
¡No es compatible con 4.6!
alerya

3
Es muy triste y me enoja. Lamentablemente, estoy usando código detrás por esa razón. Vergüenza para la EM.
alerya

1
@alerya: 1. Puede escribir completamente el comportamiento de ese SDK usted mismo si realmente lo desea. 2. ¿Ha probado el paquete nu-get?
HB

1
@Shimmy: ¡Claro que sí!
HB

6
Sé que esto es obvio para algunos de ustedes, pero deben hacer referencia a: xmlns:i="http://schemas.microsoft.com/xaml/behaviors"no: xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"como en todos los demás ejemplos que he visto.
Yosef Bernal

124

Aunque este problema es bastante antiguo, creo que esta es una noticia relevante / la respuesta más reciente: Comportamientos XAML de código abierto de Microsoft y publicó una publicación de blog sobre cómo actualizar a esta versión: https://devblogs.microsoft.com/dotnet/open -sourcing-xaml-comportamientos-para-wpf /

Para ahorrarle un clic, estos son los pasos principales para migrar:

  1. Eliminar la referencia a "Microsoft.Expression.Interactions" y "System.Windows.Interactivity"
  2. Instale el paquete Microsoft.Xaml.Behaviors.Wpf NuGet.
  3. Archivos XAML: reemplace los espacios de nombres xmlns http://schemas.microsoft.com/expression/2010/interactivity y http://schemas.microsoft.com/expression/2010/interactions por http://schemas.microsoft.com/xaml / comportamientos
  4. Archivos C #: reemplace los usos en los archivos c # "Microsoft.Xaml.Interactivity" y "Microsoft.Xaml.Interactions" por "Microsoft.Xaml.Behaviors"

6
Esta es, ahora, absolutamente la respuesta correcta. Estoy muy contento de que Microsoft finalmente haya hecho esto. Gracias por publicarlo. No estoy seguro de cómo me perdí la entrada del blog. Debería haber un boletín de noticias para "Paquetes nuevos y geniales de Microsoft NuGet".
skst

1
Si Stackoverflow tiene emociones, usaría un corazón para su respuesta
Ibrahim Kais Ibrahim

1
Debería ser la respuesta seleccionada a partir de 2019. Gracias por tomarse el tiempo para agregar esta importante actualización.
minutos

1
Trabajó para mi. Actualicé la solución de 2015 en VS2019. Gracias.
KulaGGin

1
Además, si está usando alguna de las formas en schemas.microsoft.com/expression/2010/drawing , puede usar este paquete nuget ; no se requieren cambios de código.
Daniel Elkington

59

Hay un nuevo paquete NuGet que contiene System.Windows.Interactivity.dll que es compatible con:

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

Para instalar Expression.Blend.Sdk, ejecute el siguiente comando en la Consola del Administrador de paquetes

PM> Install-Package Expression.Blend.Sdk

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


10
Tenga en cuenta que este paquete no es una distribución oficial de Microsoft
piers7

2
Si ya tiene MVVM Light instalado, presentará una versión conflictiva de System.Windows.Interactivity. Para resolverlo, vea mi respuesta arriba.
Contango


19

Con Blend para Visual Studio , que se incluye en Visual Studio a partir de la versión 2013, puede encontrar la DLL en la siguiente carpeta:

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

Sin System.Windows.Interactivity.dllembargo, tendrá que agregar la referencia a usted mismo, a menos que use Blend para Visual Studio con un proyecto existente para agregar funcionalidad que hace uso del espacio de nombres de Interactividad. En ese caso, Blend agregará la referencia automáticamente.


7
Esto ayudó a solucionar mi proyecto. Con Visual Studio 2017, tenemos que ir a Visual Studio Installer y buscarlo en Componentes individuales (categoría SDK).
PRouleau

18

A veces, cuando agrega una nueva biblioteca, introduce una versión conflictiva de System.Windows.Interactivity.dll.

Por ejemplo, el paquete NuGet MVVM lightpuede requerir v4.2 de System.Windows.Interactivity.dll, pero el paquete NuGet Rx-XAMLpuede requerir v4.5 de System.Windows.Interactivity.dll. Esto evitará que el proyecto funcione, porque no importa qué versión de System.Windows.Interactivity.dllusted incluya, una de las bibliotecas se negará a compilar.

Para solucionarlo, agregue un redireccionamiento de enlace de ensamblaje editando su app.configpara que se vea así:

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

No se preocupe por cambiar PublicKeyToken, eso es constante en todas las versiones, ya que depende del nombre del .dll, no de la versión.

Asegúrese de hacer coincidir el newVersionen su appConfigcon la versión real a la que termina apuntando:

ingrese la descripción de la imagen aquí


Hiciste exactamente la misma publicación aquí, stackoverflow.com/questions/13514027/… Múltiples puntos :)
pix

14

La solución alternativa es modificar su instalación actual de Visual Studio en Visual Studio Installer

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

agregando el Blend for Visual Studio SDK for .NET'Componente individual' en 'SDK, bibliotecas y marcos':

ingrese la descripción de la imagen aquí después de agregar este componente System.Windows.Interactivitydebería aparecer en su ubicación habitual Add Reference/Assemblies/Extensions.


Parece que esto solo funcionaría para VS2017 o anterior. Para versiones posteriores, consulte otras respuestas.


2
no aparece para mí :(
Julien

tampoco me aparece. usando VS 2019
Barış Akkurt


1

Lo obtuve a través del paquete Prism.WPF NuGet. (incluye Windows.System.Interactivity)


0

Si está trabajando con MVVM Light, debe usar el System.Windows.Interactivity Version 4.0(el .dll de NuGet no funcionará) que puede encontrar en:

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

Simplemente agregue este .dll manualmente como referencia y debería estar bien.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.