Jak dodać System.Windows.Interactivity do projektu?


108

Brakuje mojego projektu System.Windows.Interactivity. Google mówi, że muszę zainstalować Expression Blend, ale na innym komputerze mam tę bibliotekę i nie mam zainstalowanego Expression Blend. Więc powinien być inny sposób na uzyskanie System.Windows.Interactivity? Co powinienem zrobić? (w tej chwili nie mam innego komputera, więc nie mogę po prostu skopiować tej biblioteki :)

Odpowiedzi:


93

Oficjalny pakiet zachowań to Microsoft.Xaml.Behaviors.Wpf.

Kiedyś znajdował się w Blend SDK i jest przestarzały.
Zobacz odpowiedź Jana, aby uzyskać więcej informacji, jeśli musisz przeprowadzić migrację.


2
Nie jest kompatybilny z 4.6!
alerya

3
To bardzo smutne i doprowadza mnie do szału. Z tego powodu niestety używam kodu. Wstyd na stwardnieniu rozsianym.
alerya

1
@alerya: 1. Możesz całkowicie samodzielnie napisać zachowanie tego SDK, jeśli naprawdę chcesz. 2. Czy próbowałeś skorzystać z pakietu nu-get?
HB

1
@Shimmy: Jasne!
HB

6
Wiem, że dla niektórych jest to oczywiste, ale musisz się odnieść: xmlns:i="http://schemas.microsoft.com/xaml/behaviors"nie: xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"jak w każdym innym przykładzie, który widziałem.
Yosef Bernal

129

Chociaż ten problem jest dość stary, myślę, że to istotne wiadomości / najnowsza odpowiedź: Zachowania XAML oparte na otwartym kodzie źródłowym firmy Microsoft i opublikował post na blogu, jak zaktualizować do tej wersji: https://devblogs.microsoft.com/dotnet/open -sourcing-xaml-behawior-for-wpf /

Aby zaoszczędzić Ci kliknięcia, oto główne kroki migracji:

  1. Usuń odniesienie do „Microsoft.Expression.Interactions” i „System.Windows.Interactivity”
  2. Zainstaluj pakiet Microsoft.Xaml.Behaviors.Wpf NuGet.
  3. Pliki XAML - wymienić nazw xmlns http://schemas.microsoft.com/expression/2010/interactivity i http://schemas.microsoft.com/expression/2010/interactions z http://schemas.microsoft.com/xaml / zachowania
  4. Pliki C # - zamień zastosowania w plikach C # „Microsoft.Xaml.Interactivity” i „Microsoft.Xaml.Interactions” na „Microsoft.Xaml.Behaviors”

6
To jest - teraz - absolutnie poprawna odpowiedź. Tak się cieszę, że Microsoft w końcu to zrobił. Dzięki za wysłanie. Nie jestem pewien, jak przegapiłem wpis na blogu. Powinien istnieć biuletyn dotyczący „Fajnych, nowych pakietów Microsoft NuGet”.
skst

1
Jeśli Stackoverflow ma emocje, użyłbym harta do twojej odpowiedzi
Ibrahim Kais Ibrahim

1
Powinna być wybraną odpowiedzią od 2019 r. Dziękujemy za poświęcenie czasu na dodanie tej ważnej aktualizacji.
min

1
Pracował dla mnie. Zaktualizowałem rozwiązanie z 2015 roku na VS2019. Dziękuję Ci.
KulaGGin

1
Ponadto, jeśli używasz dowolnego z kształtów w schemas.microsoft.com/expression/2010/drawing , możesz użyć tego pakietu nuget - nie są wymagane żadne zmiany kodu.
Daniel Elkington,

59

Istnieje nowy pakiet NuGet zawierający plik System.Windows.Interactivity.dll, który jest zgodny z:

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

Aby zainstalować Expression.Blend.Sdk, uruchom następujące polecenie w konsoli Menedżera pakietów

PM> Install-Package Expression.Blend.Sdk

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


11
Zwróć uwagę, że ten pakiet nie jest oficjalną dystrybucją firmy Microsoft
piers7

2
Jeśli masz już zainstalowany program MVVM Light, wprowadzi on kolidującą wersję System.Windows.Interactivity. Aby rozwiązać ten problem, zobacz moją odpowiedź powyżej.
Contango,


20

W przypadku programu Blend for Visual Studio , który jest zawarty w programie Visual Studio, począwszy od wersji 2013, można znaleźć bibliotekę DLL w następującym folderze:

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

Będziesz musiał jednak dodać odwołanie do System.Windows.Interactivity.dllsiebie, chyba że używasz programu Blend for Visual Studio z istniejącym projektem, aby dodać funkcjonalność korzystającą z przestrzeni nazw interaktywności. W takim przypadku Blend automatycznie doda odniesienie.


7
Pomogło to naprawić mój projekt. W przypadku programu Visual Studio 2017 musimy przejść do Instalatora programu Visual Studio i znaleźć go w poszczególnych składnikach (kategoria SDK).
PRouleau

18

Czasami po dodaniu nowej biblioteki w programie wprowadzana jest kolidująca wersja System.Windows.Interactivity.dll.

Na przykład pakiet NuGet MVVM lightmoże wymagać wersji System.Windows.Interactivity.dll4.2, ale pakiet NuGet Rx-XAMLmoże wymagać wersji 4.5 System.Windows.Interactivity.dll. Zapobiegnie to działaniu projektu, ponieważ bez względu na to, którą wersję System.Windows.Interactivity.dlldołączasz, jedna z bibliotek odmówi kompilacji.

Aby to naprawić, dodaj przekierowanie powiązania zestawu, edytując plik, app.configaby wyglądał mniej więcej tak:

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

Nie martw się o zmianę PublicKeyToken, jest to stałe we wszystkich wersjach, ponieważ zależy to od nazwy pliku .dll, a nie wersji.

Upewnij się, że pokrywa się newVersionw twojej appConfigdo aktualnej wersji, że nie skończysz wskazując na:

wprowadź opis obrazu tutaj


Zrobiłeś dokładnie ten sam post tutaj, stackoverflow.com/questions/13514027/ ... Wiele punktów :)
pix

14

Alternatywnym rozwiązaniem jest zmodyfikowanie bieżącej instalacji programu Visual Studio w Instalatorze programu Visual Studio

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

dodanie Blend for Visual Studio SDK for .NET„Indywidualnego składnika” w obszarze „Zestawy SDK, biblioteki i struktury”:

wprowadź opis obrazu tutaj po dodaniu tego komponentu System.Windows.Interactivitypowinien pojawić się w swoim zwykłym miejscu Add Reference/Assemblies/Extensions.


Wygląda na to, że działałoby to tylko w przypadku VS2017 lub wcześniejszych. W przypadku późniejszych wersji zapoznaj się z innymi odpowiedziami.


2
nie pojawia się dla mnie :(
Julien

u mnie też się nie pojawia. przy użyciu VS 2019
Barış Akkurt


1

Mam go za pośrednictwem pakietu NuGet Prism.WPF. (obejmuje Windows.System.Interactivity)


0

Jeśli pracujesz z MVVM Light, musisz użyć System.Windows.Interactivity Version 4.0(plik NuGet .dll nie zadziała), który można znaleźć w:

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

Po prostu dodaj ten plik .dll ręcznie jako odniesienie i powinno być dobrze.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.