Comment ajouter System.Windows.Interactivity au projet?


108

Mon projet manque System.Windows.Interactivity. Google dit que je dois installer Expression Blend, mais sur mon autre ordinateur, j'ai cette bibliothèque et je n'ai pas Expression Blend installé. Il devrait donc y avoir un autre moyen d'obtenir System.Windows.Interactivity? Que devrais-je faire? (pour le moment je n'ai pas d'autre ordinateur donc je ne peux pas simplement copier cette bibliothèque :)

Réponses:


92

Le package officiel pour les comportements est Microsoft.Xaml.Behaviors.Wpf.

Il se trouvait auparavant dans le SDK Blend et est obsolète.
Consultez la réponse de Jan pour plus de détails si vous devez migrer.


2
Non compatible avec 4.6!
alerya le

3
C'est très triste et me rend fou. J'utilise malheureusement du code pour cette raison. Honte à MS.
alerya le

1
@alerya: 1. Vous pouvez écrire vous-même complètement le comportement de ce SDK si vous le souhaitez vraiment. 2. Avez-vous essayé le package nu-get?
HB du

1
@Shimmy: Bien sûr!
HB

6
Je sais que cela est évident pour certains d'entre vous, mais vous devez faire référence: xmlns:i="http://schemas.microsoft.com/xaml/behaviors"non: xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"comme dans tous les autres exemples que j'ai vus.
Yosef Bernal le

125

Bien que ce problème soit assez ancien, je pense qu'il s'agit d'une nouvelle pertinente / de la réponse la plus récente: Microsoft Comportements XAML open-source et a publié un article de blog sur la mise à jour vers cette version: https://devblogs.microsoft.com/dotnet/open -sourcing-xaml-comportements-pour-wpf /

Pour vous épargner un clic, voici les principales étapes de la migration:

  1. Supprimer la référence à «Microsoft.Expression.Interactions» et «System.Windows.Interactivity»
  2. Installez le package NuGet Microsoft.Xaml.Behaviors.Wpf .
  3. Fichiers XAML - remplacez les espaces de noms xmlns http://schemas.microsoft.com/expression/2010/interactivity et http://schemas.microsoft.com/expression/2010/interactions par http://schemas.microsoft.com/xaml /comportements
  4. Fichiers C # - remplacez les utilisations dans les fichiers c # «Microsoft.Xaml.Interactivity» et «Microsoft.Xaml.Interactions» par «Microsoft.Xaml.Behaviors»

6
C'est - maintenant - absolument la bonne réponse. Je suis tellement content que Microsoft ait enfin fait cela. Merci de l'avoir publié. Je ne sais pas comment j'ai manqué l'entrée du blog. Il devrait y avoir une newsletter pour «Cool, nouveaux packages Microsoft NuGet».
skst

1
Si Stackoverflow a des émotions, j'utiliserais un cœur pour votre réponse
Ibrahim Kais Ibrahim

1
Devrait être la réponse sélectionnée à partir de 2019. Merci d'avoir pris le temps d'ajouter cette mise à jour importante.
min

1
A travaillé pour moi. J'ai mis à jour la solution à partir de 2015 sur VS2019. Je vous remercie.
KulaGGin

1
En outre, si vous utilisez l'une des formes de schemas.microsoft.com/expression/2010/drawing , vous pouvez utiliser ce package nuget - aucune modification de code n'est requise.
Daniel Elkington

59

Il existe un nouveau package NuGet qui contient le System.Windows.Interactivity.dll compatible avec:

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

Pour installer Expression.Blend.Sdk, exécutez la commande suivante dans la console du gestionnaire de package

PM> Install-Package Expression.Blend.Sdk

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


10
Notez que ce package n'est pas une distribution officielle de Microsoft
piers7

2
Si MVVM Light est déjà installé, il introduira une version conflictuelle de System.Windows.Interactivity. Pour résoudre, voir ma réponse ci-dessus.
Contango du


19

Avec Blend pour Visual Studio , qui est inclus dans Visual Studio à partir de la version 2013, vous pouvez trouver la DLL dans le dossier suivant:

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

Vous devrez cependant ajouter la référence au System.Windows.Interactivity.dllvous-même, sauf si vous utilisez Blend pour Visual Studio avec un projet existant pour ajouter des fonctionnalités qui utilisent l'espace de noms Interactivity. Dans ce cas, Blend ajoutera automatiquement la référence.


7
Cela a aidé à résoudre mon projet. Avec Visual Studio 2017, nous devons aller dans Visual Studio Installer et le trouver dans les composants individuels (catégorie SDK).
PRouleau

18

Parfois, lorsque vous ajoutez une nouvelle bibliothèque, in introduit une version conflictuelle de System.Windows.Interactivity.dll.

Par exemple, le package NuGet MVVM lightpeut nécessiter la version 4.2 de System.Windows.Interactivity.dll, mais le package NuGet Rx-XAMLpeut nécessiter la version 4.5 de System.Windows.Interactivity.dll. Cela empêchera le projet de fonctionner, car quelle que soit la version que System.Windows.Interactivity.dllvous incluez, l'une des bibliothèques refusera de compiler.

Pour résoudre le problème, ajoutez une redirection de liaison d'assembly en modifiant votre app.configpour ressembler à quelque chose comme ceci:

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

Ne vous inquiétez pas de changer le PublicKeyToken, c'est constant dans toutes les versions, car cela dépend du nom du .dll, pas de la version.

Assurez-vous que vous faites correspondre le newVersiondans votre appConfigà la version réelle que vous finissez par pointer:

entrez la description de l'image ici


Vous avez fait exactement le même message ici, stackoverflow.com/questions/13514027/... Plusieurs points :)
pix

14

Une autre solution consiste à modifier votre installation actuelle de Visual Studio dans le programme d'installation de Visual Studio

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

ajoutant le Blend for Visual Studio SDK for .NET`` composant individuel '' sous `` SDK, bibliothèques et frameworks '':

entrez la description de l'image ici après avoir ajouté ce composant System.Windows.Interactivitydoit apparaître à son emplacement habituel Add Reference/Assemblies/Extensions.


Il semble que cela ne fonctionne que pour VS2017 ou une version antérieure. Pour les versions ultérieures, veuillez vous référer à d'autres réponses.


2
n'apparaît pas pour moi :(
Julien

ne me paraît pas non plus. en utilisant VS 2019
Barış Akkurt


1

Je l'ai obtenu via le package NuGet Prism.WPF. (il inclut Windows.System.Interactivity)


0

Si vous travaillez avec MVVM Light, vous devez utiliser le System.Windows.Interactivity Version 4.0(le NuGet .dll ne fonctionnera pas) que vous pouvez trouver sous:

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

Ajoutez simplement ce fichier .dll manuellement en tant que référence et cela devrait aller.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.