Як додати System.Windows.Interactivity до проекту?


107

Мій проект відсутній System.Windows.Interactivity. Google каже, що я повинен встановити Expression Blend, але на іншому комп'ютері у мене є ця бібліотека, і у мене не встановлена ​​програма Expression Blend. Тож має бути інший спосіб отримати System.Windows.Interactivity? Що я повинен зробити? (зараз у мене немає іншого комп’ютера, тому я не можу просто скопіювати цю бібліотеку :)

Відповіді:


92

Офіційний пакет поведінки є Microsoft.Xaml.Behaviors.Wpf .

Раніше вона була в SDK Blend і застаріла.
Дивіться відповідь Яна для отримання більш детальної інформації, якщо вам потрібно перейти.


2
Не сумісний із 4.6!
алерія

3
Це дуже сумно і зводить мене з розуму. Я, на жаль, використовую код позаду з цієї причини. Сором МС.
алерія

1
@alerya: 1. Ви можете повністю написати поведінку цього SDK, якщо цього дуже хочете. 2. Чи пробували ви пакет nu-get?
НВ

1
@Shimmy: Звичайно, річ!
НВ

6
Я знаю, що це очевидно для деяких із вас, але вам потрібно послатись: xmlns:i="http://schemas.microsoft.com/xaml/behaviors"ні: xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"як у кожному іншому прикладі, який я бачив.
Йосеф Бернал

124

Хоча це питання досить старе, я вважаю, що це актуальна новина / остання відповідь: Microsoft XAML поведінки з відкритим джерелом та опублікувала публікацію в блозі, як оновити цю версію: https://devblogs.microsoft.com/dotnet/open -sourcing-xaml-behaviors-for-wpf /

Щоб заощадити ваш клік, це основні кроки для переміщення:

  1. Видаліть посилання на "Microsoft.Expression.Interactions" та "System.Windows.Interactivity"
  2. Встановіть пакет Microsoft.Xaml.Behaviors.Wpf NuGet.
  3. Файли XAML - замініть простори імен xmlns http://schemas.microsoft.com/expression/2010/interactivity та http://schemas.microsoft.com/expression/2010/interactions на http://schemas.microsoft.com/xaml / поведінки
  4. Файли C # - замініть уживані файли c # на "Microsoft.Xaml.Interactivity" та "Microsoft.Xaml.Interactions" на "Microsoft.Xaml.Behaviors"

6
Це - зараз - абсолютно правильна відповідь. Я дуже радий, що Microsoft нарешті зробила це. Дякуємо за публікацію Я не впевнений, як я пропустив запис у блозі. Повинен бути інформаційний бюлетень для «Класних, нових пакетів Microsoft NuGet».
skst

1
Якщо у Stackoverflow є емоції, я би використав жорстокість для вашої відповіді
Ibrahim Kais Ibrahim

1
Має бути обрана відповідь станом на 2019 рік. Дякуємо, що знайшли час, щоб додати це важливе оновлення.
хвилини

1
Працювали для мене. Я оновив рішення з 2015 року на VS2019. Дякую.
KulaGGin

1
Крім того, якщо ви використовуєте будь-яку з фігур у schemas.microsoft.com/expression/2010/drawing , ви можете використовувати цей пакунок, що не потребує змін.
Даніель Елкінгтон

59

Існує новий пакет NuGet, який містить System.Windows.Interactivity.dll, сумісний з:

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

Щоб встановити Expression.Blend.Sdk, запустіть таку команду в консолі диспетчера пакетів

PM> Install-Package Expression.Blend.Sdk

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


10
Зауважте, що цей пакет не є офіційним розповсюдженням Microsoft
piers7

2
Якщо у вас вже встановлений MVVM Light, він введе версію зіткнення System.Windows.Interactivity. Щоб вирішити проблему, дивіться мою відповідь вище.
Контанго


19

За допомогою програми Blend for Visual Studio , яка входить у Visual Studio, починаючи з версії 2013 року, ви можете знайти DLL у такій папці:

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

Вам потрібно буде додати посилання на System.Windows.Interactivity.dllсебе, якщо тільки ви не використовуєте Blend для Visual Studio з уже наявним проектом, щоб додати функціонал, що використовує простір імен Interactivity. У цьому випадку Blend додасть посилання автоматично.


7
Це допомогло виправити мій проект. З Visual Studio 2017 нам потрібно зайти в інсталятор Visual Studio і знайти його в розділі "Індивідуальні компоненти" (категорія SDK).
PRouleau

18

Іноді, коли ви додаєте нову бібліотеку, вводить збірну версію System.Windows.Interactivity.dll .

Наприклад, для пакета NuGet MVVM lightможе знадобитися v4.2 System.Windows.Interactivity.dll, але для пакета NuGet Rx-XAMLможе знадобитися v4.5 System.Windows.Interactivity.dll. Це не дозволить проекту працювати, адже незалежно від того, на якій версіїSystem.Windows.Interactivity.dll ви входите, одна з бібліотек відмовиться від компіляції.

Щоб виправити, додайте переспрямування прив'язки, що редагує збірку, відредагувавши так, app.configщоб він виглядав приблизно так:

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

Не переживайте про зміну PublicKeyToken Це постійно в усіх версіях, оскільки це залежить від назви .dll, а не версії.

Переконайтесь, що ви збігаєтесь newVersionу вашій appConfigз фактичною версією, на яку в кінцевому підсумку вказуєте:

введіть тут опис зображення


Ви зробили саме такий пост тут, stackoverflow.com/questions/13514027/… Кілька очок :)
пікс

14

Альтернативне рішення - змінити поточну установку Visual Studio у програмі встановлення Visual Studio

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

додавши Blend for Visual Studio SDK for .NET"Індивідуальний компонент" у розділі "SDK, бібліотеки та рамки":

введіть тут опис зображення після додавання цей компонент System.Windows.Interactivityповинен з’явитися у звичайному місці Add Reference/Assemblies/Extensions.


Здається, це буде працювати лише для VS2017 або раніше. Для пізніших версій див. Інші відповіді.


2
не з'являється для мене :(
Julien

не з’являється і для мене. за допомогою VS 2019
Barış Akkurt



0

Якщо ви працюєте з MVVM Light, вам потрібно скористатися System.Windows.Interactivity Version 4.0(роботою NuGet .dll wont), яку ви можете знайти під:

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

Просто додайте цей .dll вручну як довідник, і він повинен бути добре.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.