Come aggiungere System.Windows.Interactivity al progetto?


107

Il mio progetto manca System.Windows.Interactivity. Google dice che devo installare Expression Blend, ma sull'altro mio computer ho questa libreria e non ho Expression Blend installato. Quindi ci dovrebbe essere un altro modo per ottenere System.Windows.Interactivity? Cosa dovrei fare? (in questo momento non ho un altro computer quindi non posso semplicemente copiare questa libreria :)

Risposte:


92

Il pacchetto ufficiale per i comportamenti è Microsoft.Xaml.Behaviors.Wpf .

Si trovava in Blend SDK ed è deprecato.
Vedi la risposta di Jan per maggiori dettagli se devi eseguire la migrazione.


2
Non compatibile con 4.6!
alerya

3
È molto triste e mi fa impazzire. Purtroppo sto usando il codice dietro per questo motivo. Peccato per la SM.
alerya

1
@alerya: 1. Puoi scrivere completamente il comportamento di quell'SDK da solo, se lo desideri. 2. Hai provato il pacchetto nu-get?
HB

1
@ Shimmy: certo!
HB

6
So che questo è ovvio per alcuni di voi, ma è necessario fare riferimento a questo: xmlns:i="http://schemas.microsoft.com/xaml/behaviors"no: xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"come in ogni altro esempio che ho visto.
Yosef Bernal

124

Sebbene questo problema sia piuttosto vecchio, penso che questa sia una notizia pertinente / la risposta più recente: Microsoft open source XAML Behaviors e pubblicato un post sul blog su come aggiornare a questa versione: https://devblogs.microsoft.com/dotnet/open -sourcing-XAML comportamenti-per-WPF /

Per risparmiare un clic, ecco i passaggi principali per la migrazione:

  1. Rimuovere il riferimento a "Microsoft.Expression.Interactions" e "System.Windows.Interactivity"
  2. Installa il pacchetto NuGet Microsoft.Xaml.Behaviors.Wpf .
  3. File XAML: sostituisci gli spazi dei nomi xmlns http://schemas.microsoft.com/expression/2010/interactivity e http://schemas.microsoft.com/expression/2010/interactions con http://schemas.microsoft.com/xaml / comportamenti
  4. File C #: sostituire gli utilizzi nei file c # "Microsoft.Xaml.Interactivity" e "Microsoft.Xaml.Interactions" con "Microsoft.Xaml.Behaviors"

6
Questa è - ora - assolutamente la risposta corretta. Sono così felice che Microsoft abbia finalmente fatto questo. Grazie per averlo postato. Non sono sicuro di come mi sia perso il post sul blog. Dovrebbe essere disponibile una newsletter per "Fantastici, nuovi pacchetti Microsoft NuGet".
skst

1
Se Stackoverflow ha emozioni, userei un cuore per la tua risposta
Ibrahim Kais Ibrahim

1
Dovrebbe essere la risposta selezionata a partire dal 2019. Grazie per aver dedicato del tempo per aggiungere questo importante aggiornamento.
min

1
Ha funzionato per me. Ho aggiornato la soluzione dal 2015 su VS2019. Grazie.
KulaGGin

1
Inoltre, se stai usando una delle forme in schemas.microsoft.com/expression/2010/drawing , puoi usare questo pacchetto nuget : non sono necessarie modifiche al codice.
Daniel Elkington

59

È disponibile un nuovo pacchetto NuGet che contiene System.Windows.Interactivity.dll compatibile con:

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

Per installare Expression.Blend.Sdk, eseguire il comando seguente nella console di Gestione pacchetti

PM> Install-Package Expression.Blend.Sdk

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


10
Si noti che questo pacchetto non è una distribuzione Microsoft ufficiale
piers7

2
Se hai già installato MVVM Light, introdurrà una versione contrastante di System.Windows.Interactivity. Per risolvere, vedere la mia risposta sopra.
Contango


19

Con Blend per Visual Studio , incluso in Visual Studio a partire dalla versione 2013, puoi trovare la DLL nella seguente cartella:

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

System.Windows.Interactivity.dllTuttavia, dovrai aggiungere il riferimento a te stesso, a meno che non utilizzi Blend per Visual Studio con un progetto esistente per aggiungere funzionalità che fanno uso dello spazio dei nomi Interactivity. In tal caso, Blend aggiungerà automaticamente il riferimento.


7
Questo ha aiutato a risolvere il mio progetto. Con Visual Studio 2017, dobbiamo andare nel programma di installazione di Visual Studio e trovarlo nei singoli componenti (categoria SDK).
PRouleau

18

A volte, quando aggiungi una nuova libreria, in introduce una versione contrastante di System.Windows.Interactivity.dll.

Ad esempio, il pacchetto NuGet MVVM lightpotrebbe richiedere la v4.2 di System.Windows.Interactivity.dll, ma il pacchetto NuGet Rx-XAMLpotrebbe richiedere la v4.5 di System.Windows.Interactivity.dll. Ciò impedirà al progetto di funzionare, perché non importa quale versione System.Windows.Interactivity.dllincludi, una delle librerie si rifiuterà di compilare.

Per risolvere il problema, aggiungi un reindirizzamento dell'associazione dell'assembly modificando il tuo app.configin modo che assomigli a questo:

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

Non preoccuparti di cambiare il file PublicKeyToken , che è costante in tutte le versioni, poiché dipende dal nome del .dll, non dalla versione.

Assicurati di abbinare il newVersionnel tuo appConfigalla versione effettiva che finisci per indicare:

inserisci qui la descrizione dell'immagine


Hai fatto lo stesso identico post qui, stackoverflow.com/questions/13514027/… Punti multipli :)
pix

14

Una soluzione alternativa consiste nel modificare l'installazione corrente di Visual Studio nel programma di installazione di Visual Studio

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

aggiungendo il Blend for Visual Studio SDK for .NET"Componente individuale" in "SDK, librerie e framework":

inserisci qui la descrizione dell'immagine dopo aver aggiunto questo componente System.Windows.Interactivitydovrebbe apparire nella sua posizione normale Add Reference/Assemblies/Extensions.


Sembra che questo funzioni solo per VS2017 o versioni precedenti. Per le versioni successive, fare riferimento ad altre risposte.


2
non appare per me :(
Julien

non compare neanche per me. utilizzando VS 2019
Barış Akkurt


1

L'ho ottenuto tramite il pacchetto NuGet Prism.WPF. (include Windows.System.Interactivity)


0

Se stai lavorando con MVVM Light devi usare il System.Windows.Interactivity Version 4.0(il NuGet .dll non funzionerà) che puoi trovare sotto:

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

Basta aggiungere manualmente questo .dll come riferimento e dovrebbe andare bene.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.