System.Windows.Interactivity projeye nasıl eklenir?


108

Projem eksik System.Windows.Interactivity. Google, Expression Blend'i yüklemem gerektiğini söylüyor, ancak diğer bilgisayarımda bu kitaplık var ve Expression Blend yüklü değil. Öyleyse elde etmenin başka bir yolu olmalı System.Windows.Interactivity? Ne yapmalıyım? (şu anda başka bir bilgisayarım yok, bu yüzden bu kitaplığı kopyalayamam :)

Yanıtlar:


93

Davranışlar için resmi paket Microsoft.Xaml.Behaviors.Wpf.

Önceden Blend SDK içindeydi ve kullanımdan kaldırıldı. Geçiş yapmanız gerekirse, daha fazla ayrıntı için Jan'ın yanıtına
bakın .


2
4.6 ile uyumlu değil!
alerya

3
Bu çok üzücü ve beni deli ediyor. Ne yazık ki bu nedenle arkasında kod kullanıyorum. MS utanç verici.
alerya

1
@alerya: 1. Gerçekten istiyorsanız, o SDK'nın davranışını tamamen kendiniz yazabilirsiniz. 2. nu-get paketini denediniz mi?
HB

1
@Shimmy: Elbette!
HB

6
Bunun bazılarınız için açık olduğunu biliyorum ama referans almanız gereken: xmlns:i="http://schemas.microsoft.com/xaml/behaviors"değil: xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"gördüğüm diğer tüm örneklerde olduğu gibi.
Yosef Bernal

130

Bu sorun oldukça eski olmasına rağmen, bunun alakalı bir haber / en son cevap olduğunu düşünüyorum: Microsoft açık kaynaklı XAML Davranışları ve bu sürüme nasıl güncelleme yapılacağına dair bir blog yazısı yayınladı: https://devblogs.microsoft.com/dotnet/open -sourcing-xaml-behaviors-for-wpf /

Size bir tıklama kazandırmak için, taşımanın ana adımları şu şekildedir:

  1. "Microsoft.Expression.Interactions" ve "System.Windows.Interactivity" referansını kaldırın
  2. Microsoft.Xaml.Behaviors.Wpf NuGet paketini yükleyin .
  3. XAML dosyaları - xmlns ad yerine http://schemas.microsoft.com/expression/2010/interactivity ve http://schemas.microsoft.com/expression/2010/interactions ile http://schemas.microsoft.com/xaml / davranışlar
  4. C # dosyaları - c # dosyalarındaki "Microsoft.Xaml.Interactivity" ve "Microsoft.Xaml.Interactions" kullanımlarını "Microsoft.Xaml.Behaviors" ile değiştirin

6
Bu - şimdi - kesinlikle doğru cevap. Microsoft'un sonunda bunu yapmasına çok sevindim. Gönderdiğiniz için teşekkürler. Blog girişini nasıl kaçırdığımı bilmiyorum. "Harika, yeni Microsoft NuGet paketleri" için bir haber bülteni olmalıdır.
ilk

1
Stackoverflow'un duyguları varsa, cevabınız için bir hart kullanırdım
İbrahim Kais Ibrahim

1
2019 itibariyle seçilen cevap olmalıdır. Bu önemli güncellemeyi eklemek için zaman ayırdığınız için teşekkür ederiz.
dakika

1
Benim için çalıştı. Çözümü 2015'ten VS2019'da güncelledim. Teşekkür ederim.
KulaGGin

1
Ek olarak, schemas.microsoft.com/expression/2010/drawing'deki şekillerden herhangi birini kullanıyorsanız , bu nuget paketini kullanabilirsiniz; kod değişikliği gerekmez.
Daniel Elkington

59

System.Windows.Interactivity.dll ile uyumlu olan yeni bir NuGet paketi vardır:

  • WPF 4.0, 4.5
  • Silverligt 4.0, 5.0
  • Windows Phone 7.1, 8.0
  • Windows Mağazası 8, 8.1

Expression.Blend.Sdk'yi kurmak için Paket Yöneticisi Konsolunda aşağıdaki komutu çalıştırın

PM> Install-Package Expression.Blend.Sdk

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


11
Bu paketin resmi bir Microsoft dağıtımı olmadığını unutmayın
piers7

2
MVVM Light zaten kurulu ise, çakışan bir System.Windows.Interactivity. Çözmek için yukarıdaki cevabıma bakın.
Contango


20

2013 sürümünden itibaren Visual Studio'da bulunan Blend for Visual Studio ile DLL'yi aşağıdaki klasörde bulabilirsiniz:

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

System.Windows.Interactivity.dllEtkileşim ad alanını kullanan işlevsellik eklemek için var olan bir projeyle Visual Studio için Blend'i kullanmadığınız sürece , referansı kendinize eklemeniz gerekecektir . Bu durumda, Blend referansı otomatik olarak ekleyecektir.


7
Bu, bunun projemi düzeltmesine yardımcı oldu. Visual Studio 2017 ile, Visual Studio Installer'a gidip bunu Bireysel Bileşenler (SDK kategorisi) içinde bulmamız gerekiyor.
PRouleau

18

Bazen, yeni bir kitaplık eklediğinizde, in çakışan bir sürümünü sunar System.Windows.Interactivity.dll.

Örneğin, NuGet paketi v4.2'yi MVVM lightgerektirebilir System.Windows.Interactivity.dll, ancak NuGet paketi v4.5'i Rx-XAMLgerektirebilir System.Windows.Interactivity.dll. Bu, projenin çalışmasını engelleyecektir, çünkü hangi sürümünü System.Windows.Interactivity.dlldahil ederseniz edin, kütüphanelerden biri derlemeyi reddedecektir.

Düzeltmek için, aşağıdaki app.configgibi görünecek şekilde düzenleyerek bir Assembly Binding Redirect ekleyin :

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

Sürüme değil PublicKeyToken, .dll'nin adına bağlı olduğundan, tüm sürümlerde sabit olan 'yi değiştirme konusunda endişelenmeyin .

newVersionKendi appConfigiçinde bulunduğunuz gerçek sürümle eşleştiğinden emin olun :

görüntü açıklamasını buraya girin


Burada tam olarak aynı gönderiyi yaptınız, stackoverflow.com/questions/13514027/… Birden çok puan :)
pix

14

Alternatif çözüm etmektir değiştirmek Visual Studio Installer içinde geçerli Visual Studio kurulumu

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

ekleyerek Blend for Visual Studio SDK for .NET'SDK'larımızla kütüphaneler ve çerçeveler altında' Bireysel bileşeni ':

görüntü açıklamasını buraya girin bu bileşeni ekledikten sonra System.Windows.Interactivitynormal konumunda görünmelidir Add Reference/Assemblies/Extensions.


Görünüşe göre bu yalnızca VS2017 veya öncesi için işe yarayacak. Daha sonraki sürümler için lütfen diğer yanıtlara bakın.


2
bana görünmüyor :(
Julien

benim için de görünmüyor. VS 2019 ile
Barış Akkurt


1

Prism.WPF NuGet-Paketi aracılığıyla aldım. (Windows.System.Interactivity'yi içerir)


0

MVVM Light ile çalışıyorsanız, System.Windows.Interactivity Version 4.0altında bulabileceğiniz (NuGet .dll çalışmayacaktır) kullanmanız gerekir :

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

Sadece bu .dll dosyasını Referans olarak manuel olarak ekleyin ve sorun olmayacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.