Wie füge ich System.Windows.Interactivity zum Projekt hinzu?


106

Mein Projekt fehlt System.Windows.Interactivity. Google sagt, dass ich Expression Blend installieren muss, aber auf meinem anderen Computer habe ich diese Bibliothek und ich habe Expression Blend nicht installiert. Es sollte also einen anderen Weg geben, um zu erhalten System.Windows.Interactivity? Was soll ich machen? (Im Moment habe ich keinen anderen Computer, daher kann ich diese Bibliothek nicht einfach kopieren :)

Antworten:


92

Das offizielle Paket für Verhaltensweisen ist Microsoft.Xaml.Behaviors.Wpf.

Es befand sich früher im Blend SDK und ist veraltet.
Siehe Jan Antwort für weitere Informationen , wenn Sie migrieren müssen.


2
Nicht kompatibel mit 4.6!
Alerya

3
Es ist sehr traurig und macht mich wütend. Aus diesem Grund verwende ich leider Code dahinter. Schade um MS.
Alerya

1
@alerya: 1. Sie können das Verhalten dieses SDK vollständig selbst schreiben, wenn Sie es wirklich wollen. 2. Haben Sie versucht, das Nu-Get-Paket zu erhalten?
HB

1
@ Shimmy: Sicher!
HB

6
Ich weiß, dass dies für einige von Ihnen offensichtlich ist, aber Sie müssen sich darauf beziehen: xmlns:i="http://schemas.microsoft.com/xaml/behaviors"nicht: xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"wie in jedem anderen Beispiel, das ich gesehen habe.
Josef Bernal

124

Obwohl dieses Problem ziemlich alt ist, denke ich, dass dies relevante Neuigkeiten / die neueste Antwort sind: Microsoft Open-Source-XAML-Verhalten und veröffentlichte einen Blog-Beitrag zum Aktualisieren auf diese Version: https://devblogs.microsoft.com/dotnet/open -sourcing-xaml-verhaltens-für-wpf /

Um Ihnen einen Klick zu ersparen, sind dies die wichtigsten Schritte für die Migration:

  1. Entfernen Sie den Verweis auf "Microsoft.Expression.Interactions" und "System.Windows.Interactivity".
  2. Installieren Sie das Microsoft.Xaml.Behaviors.Wpf NuGet-Paket.
  3. XAML-Dateien - Ersetzen Sie die xmlns-Namespaces http://schemas.microsoft.com/expression/2010/interactivity und http://schemas.microsoft.com/expression/2010/interactions durch http://schemas.microsoft.com/xaml / Verhaltensweisen
  4. C # -Dateien - Ersetzen Sie die Verwendungen in den C # -Dateien "Microsoft.Xaml.Interactivity" und "Microsoft.Xaml.Interactions" durch "Microsoft.Xaml.Behaviors".

6
Dies ist - jetzt - absolut die richtige Antwort. Ich bin so froh, dass Microsoft dies endlich getan hat. Danke, dass du es gepostet hast. Ich bin mir nicht sicher, wie ich den Blogeintrag verpasst habe. Es sollte einen Newsletter für "Coole, neue Microsoft NuGet-Pakete" geben.
Skst

1
Wenn Stackoverflow Emotionen hat, würde ich einen Hirsch für Ihre Antwort verwenden
Ibrahim Kais Ibrahim

1
Sollte die ausgewählte Antwort ab 2019 sein. Vielen Dank, dass Sie sich die Zeit genommen haben, dieses wichtige Update hinzuzufügen.
Minuten

1
Hat für mich gearbeitet. Ich habe die Lösung von 2015 auf VS2019 aktualisiert. Danke dir.
KulaGGin

1
Wenn Sie eine der Formen in schemas.microsoft.com/expression/2010/drawing verwenden , können Sie dieses Nuget-Paket verwenden. Es sind keine Codeänderungen erforderlich.
Daniel Elkington

59

Es gibt ein neues NuGet-Paket, das die System.Windows.Interactivity.dll enthält, die kompatibel ist mit:

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

Führen Sie zum Installieren von Expression.Blend.Sdk den folgenden Befehl in der Package Manager-Konsole aus

PM> Install-Package Expression.Blend.Sdk

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


10
Beachten Sie, dass dieses Paket keine offizielle Microsoft-Distribution ist
piers7

2
Wenn Sie MVVM Light bereits installiert haben, wird eine Kollisionsversion von eingeführt System.Windows.Interactivity. Zur Lösung siehe meine Antwort oben.
Contango


19

Mit Blend for Visual Studio , das ab Version 2013 in Visual Studio enthalten ist, finden Sie die DLL im folgenden Ordner:

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

Sie müssen jedoch den Verweis auf sich System.Windows.Interactivity.dllselbst hinzufügen , es sei denn, Sie verwenden Blend for Visual Studio mit einem vorhandenen Projekt, um Funktionen hinzuzufügen, die den Interaktivitäts-Namespace verwenden. In diesem Fall fügt Blend die Referenz automatisch hinzu.


7
Dies hat mir geholfen, mein Projekt zu reparieren. Mit Visual Studio 2017 müssen wir in Visual Studio Installer nachsehen und es in den einzelnen Komponenten (SDK-Kategorie) finden.
PRouleau

18

Wenn Sie eine neue Bibliothek hinzufügen, wird manchmal eine kollidierende Version von eingeführt System.Windows.Interactivity.dll.

Für das NuGet-Paket ist MVVM lightmöglicherweise Version 4.2 erforderlich System.Windows.Interactivity.dll, für das NuGet-Paket ist Rx-XAMLmöglicherweise Version 4.5 erforderlich System.Windows.Interactivity.dll. Dadurch wird verhindert, dass das Projekt funktioniert, da System.Windows.Interactivity.dlleine der Bibliotheken unabhängig von Ihrer Version die Kompilierung verweigert.

Fügen Sie app.configzum Korrigieren eine Assembly Binding Redirect hinzu, indem Sie Ihre so bearbeiten, dass sie ungefähr so aussieht:

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

Machen Sie sich keine Sorgen über das Ändern der PublicKeyToken, das ist über alle Versionen konstant, da es vom Namen der DLL abhängt, nicht von der Version.

Stellen Sie sicher, dass Sie die newVersionin Ihrer appConfigmit der tatsächlichen Version übereinstimmen, auf die Sie am Ende zeigen:

Geben Sie hier die Bildbeschreibung ein


Sie haben genau die gleiche Post hier, stackoverflow.com/questions/13514027/... Mehrere Punkte :)
pix

14

Alternative Lösung zu modifizieren Ihre aktuelle Visual Studio - Installation in Visual Studio Installer

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

Hinzufügen der Blend for Visual Studio SDK for .NET‚Einzelkomponente‘ unter ‚SDKs, Bibliotheken und Frameworks‘:

Geben Sie hier die Bildbeschreibung ein Nach dem Hinzufügen sollte diese Komponente System.Windows.Interactivityan ihrer regulären Position erscheinen Add Reference/Assemblies/Extensions.


Es scheint, dass dies nur für VS2017 oder früher funktionieren würde. Für spätere Versionen beziehen Sie sich bitte auf andere Antworten.


2
erscheint nicht für mich :(
Julien

erscheint mir auch nicht. mit VS 2019
Barış Akkurt


1

Ich habe es über das Prism.WPF NuGet-Paket erhalten. (es enthält Windows.System.Interactivity)


0

Wenn Sie mit MVVM Light arbeiten, müssen Sie die System.Windows.Interactivity Version 4.0(die NuGet .dll funktioniert nicht) verwenden, die Sie unter finden können:

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

Fügen Sie diese DLL einfach manuell als Referenz hinzu und es sollte in Ordnung sein.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.