Bagaimana cara menambahkan System.Windows.Interactivity ke proyek?

107

Proyek saya hilang System.Windows.Interactivity. Google mengatakan bahwa saya harus menginstal Expression Blend, tetapi di komputer saya yang lain, saya memiliki perpustakaan ini dan saya tidak menginstal Expression Blend. Jadi harus ada cara lain untuk mendapatkannya System.Windows.Interactivity? Apa yang harus saya lakukan? (saat ini saya tidak memiliki komputer lain jadi saya tidak bisa hanya menyalin perpustakaan ini :)

javapowered
sumber

Jawaban:

92

Paket resmi untuk perilaku adalah Microsoft.Xaml.Behaviors.Wpf.

Ini dulu ada di Blend SDK dan tidak digunakan lagi.
Lihat jawaban Jan untuk lebih jelasnya jika Anda perlu bermigrasi.

HB
sumber
2
Tidak kompatibel dengan 4.6!
alerya
3
Sangat menyedihkan dan membuatku marah. Saya sedih menggunakan kode di belakang karena alasan itu. Malu di MS.
alerya
1
@ alalya: 1. Anda dapat sepenuhnya menulis sendiri perilaku SDK tersebut jika Anda benar-benar menginginkannya. 2. Sudahkah Anda mencoba paket nu-get?
HB
1
@Shimmy: Tentu!
HB
6
Saya tahu ini jelas bagi sebagian dari Anda, tetapi yang perlu Anda rujuk adalah: xmlns:i="http://schemas.microsoft.com/xaml/behaviors"bukan: xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"seperti dalam setiap contoh lain yang pernah saya lihat.
Yosef Bernal
124

Meskipun masalah ini cukup lama, saya pikir ini adalah berita yang relevan / jawaban terbaru: Perilaku XAML bersumber terbuka Microsoft dan memposting posting blog cara memperbarui ke versi ini: https://devblogs.microsoft.com/dotnet/open -sourcing-xaml-behaviors-for-wpf /

Untuk menghemat satu klik, ini adalah langkah utama untuk bermigrasi:

  1. Hapus referensi ke "Microsoft.Expression.Interactions" dan "System.Windows.Interactivity"
  2. Instal paket Microsoft.Xaml.Behaviors.Wpf NuGet.
  3. File XAML - ganti xmlns namespaces http://schemas.microsoft.com/expression/2010/interactivity dan http://schemas.microsoft.com/expression/2010/interactions dengan http://schemas.microsoft.com/xaml / behaviors
  4. File C # - ganti penggunaan di file c # "Microsoft.Xaml.Interactivity" dan "Microsoft.Xaml.Interactions" dengan "Microsoft.Xaml.Behaviors"
Jan
sumber
6
Ini - sekarang - jawaban yang benar-benar benar. Saya sangat senang Microsoft akhirnya melakukan ini. Terima kasih telah mempostingnya. Saya tidak yakin bagaimana saya melewatkan entri blog. Harus ada buletin untuk "Paket Microsoft NuGet baru yang keren."
skst
1
Jika Stackoverflow memiliki emosi, saya akan menggunakan hart untuk jawaban Anda
Ibrahim Kais Ibrahim
1
Seharusnya menjadi jawaban yang dipilih pada 2019. Terima kasih telah meluangkan waktu untuk menambahkan pembaruan penting ini.
menit
1
Bekerja untuk saya. Saya memperbarui solusi dari 2015 pada VS2019. Terima kasih.
KulaGGin
1
Selain itu, jika Anda menggunakan salah satu bentuk di schemas.microsoft.com/expression/2010/drawing , Anda dapat menggunakan paket nuget ini - tidak diperlukan perubahan kode.
Daniel Elkington
59

Ada paket NuGet baru yang berisi System.Windows.Interactivity.dll yang kompatibel dengan:

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

Untuk menginstal Expression.Blend.Sdk, jalankan perintah berikut di Package Manager Console

PM> Install-Package Expression.Blend.Sdk

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

Thomas
sumber
10
Perhatikan bahwa paket ini bukan distribusi resmi Microsoft
piers7
2
Jika Anda sudah menginstal MVVM Light, itu akan memperkenalkan versi bentrok System.Windows.Interactivity. Untuk mengatasinya, lihat jawaban saya di atas.
Contango
19

Dengan Blend for Visual Studio , yang disertakan dalam Visual Studio yang dimulai dengan versi 2013, Anda dapat menemukan DLL di folder berikut ini:

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

Anda harus menambahkan referensi ke System.Windows.Interactivity.dlldiri Anda sendiri, kecuali jika Anda menggunakan Blend untuk Visual Studio dengan proyek yang sudah ada untuk menambahkan fungsionalitas yang menggunakan namespace Interaktivitas. Dalam hal ini, Blend akan menambahkan referensi secara otomatis.

menyodok
sumber
7
Ini membantu memperbaiki proyek saya. Dengan Visual Studio 2017, kita harus masuk ke Visual Studio Installer dan menemukannya di Individual Components (kategori SDK).
PRouleau
18

Terkadang, saat Anda menambahkan perpustakaan baru, dalam memperkenalkan versi bentrok System.Windows.Interactivity.dll.

Misalnya, paket NuGet MVVM lightmungkin memerlukan v4.2 System.Windows.Interactivity.dll, tetapi paket NuGet Rx-XAMLmungkin memerlukan v4.5 System.Windows.Interactivity.dll. Ini akan mencegah proyek bekerja, karena apa pun versi yang System.Windows.Interactivity.dllAnda sertakan, salah satu pustaka akan menolak untuk dikompilasi.

Untuk memperbaikinya, tambahkan Pengalihan Pengikatan Majelis dengan mengedit Anda app.configagar terlihat seperti ini:

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

Jangan khawatir tentang mengubah PublicKeyToken, itu konstan di semua versi, karena ini tergantung pada nama .dll, bukan versinya.

Pastikan bahwa Anda mencocokkan newVersiondalam Anda appConfigdengan versi sebenarnya yang Anda tunjuk pada:

masukkan deskripsi gambar di sini

Contango
sumber
Anda melakukan posting yang sama persis di sini, stackoverflow.com/questions/13514027/… Beberapa poin :)
pix
14

Solusi alternatif adalah mengubah penginstalan Visual Studio Anda saat ini di Penginstal Visual Studio

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

menambahkan Blend for Visual Studio SDK for .NET'Komponen individual' di bawah 'SDK, pustaka, dan kerangka kerja':

masukkan deskripsi gambar di sini setelah menambahkan komponen ini System.Windows.Interactivityakan muncul di lokasi biasa Add Reference/Assemblies/Extensions.


Tampaknya ini hanya akan berfungsi untuk VS2017 atau sebelumnya. Untuk versi yang lebih baru, silakan merujuk ke jawaban lain.

keajaiban
sumber
2
tidak muncul untuk saya :(
Julien
tidak muncul untukku juga. menggunakan VS 2019
Barış Akkurt
2

Ada di MVVM Light, dapatkan dari Halaman Download Light MVVM .

Contango
sumber
1
Solusi terbaik. Penambahan: gunakan nugetInstall-Package MvvmLightLibs -Version 5.3.0
dhcgn
1

Saya mendapatkannya melalui Prism.WPF NuGet-Package. (ini termasuk Windows.System.Interactivity)

Halloween_Udo
sumber
0

Jika Anda bekerja dengan MVVM Light Anda harus menggunakan System.Windows.Interactivity Version 4.0(NuGet .dll tidak akan berfungsi) yang dapat Anda temukan di bawah:

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

Cukup tambahkan .dll ini secara manual sebagai Referensi dan itu akan baik-baik saja.

nairda-newb
sumber