如何将System.Windows.Interactivity添加到项目中?

jav*_*red 73 c# wpf

我的项目遗失了System.Windows.Interactivity.谷歌说我必须安装Expression Blend,但是在我的另一台电脑上我有这个库,我没有安装Expression Blend.那么应该有另一种方式获得System.Windows.Interactivity?我该怎么办?(现在我没有另一台电脑所以我不能只复制这个库:)

H.B*_*.B. 66

它在Blend SDK中,有一个NuGet包,或者你可以在这里(过时).

  • 我知道这对你们中的一些人来说是显而易见的,但您需要引用的是:`xmlns:i =“http://schemas.microsoft.com/xaml/behaviors”`而不是:`xmlns:i =“http://schemas” .microsoft.com/expression/2010/interactivity"` 就像我见过的所有其他示例一样。 (15认同)
  • 与 4.6 不兼容! (3认同)
  • 很伤心,让我发疯。出于这个原因,我不幸地在后面使用了代码。对MS感到羞耻。 (3认同)
  • @alerya:1. 如果您真的愿意,您可以完全自己编写该 SDK 的行为。2.你试过nu-get包了吗? (2认同)

Tho*_*mas 57

有一个新的NuGet包,其中包含与以下内容兼容的System.Windows.Interactivity.dll:

  • WPF 4.0,4.5
  • Silverligt 4.0,5.0
  • Windows Phone 7.1,8.0
  • Windows应用商店8,8.1

要安装Expression.Blend.Sdk,请在程序包管理器控制台中运行以下命令

PM> Install-Package Expression.Blend.Sdk
Run Code Online (Sandbox Code Playgroud)

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

  • 请注意,此程序包不是Microsoft的官方发行版 (6认同)
  • 如果您已经安装了 MVVM Light,它将引入一个冲突版本的“System.Windows.Interactivity”。要解决,请参阅我上面的答案。 (2认同)

Jan*_*Jan 30

尽管此问题已经很久了,但我认为这是相关新闻/最新答案:Microsoft开源XAML行为,并在博客中发布了如何更新到此版本:https : //devblogs.microsoft.com/dotnet/open为WPF采购Xaml行为/

为了节省您的点击时间,这是迁移的主要步骤:

  1. 删除对“ Microsoft.Expression.Interactions”和“ System.Windows.Interactivity”的引用
  2. 安装Microsoft.Xaml.Behaviors.Wpf NuGet程序包。
  3. XAML文件-取代的xmlns命名空间http://schemas.microsoft.com/expression/2010/interactivityhttp://schemas.microsoft.com/expression/2010/interactionshttp://schemas.microsoft.com/xaml /行为
  4. C#文件–将C#文件“ Microsoft.Xaml.Interactivity”和“ Microsoft.Xaml.Interactions”中的用法替换为“ Microsoft.Xaml.Behaviors”

  • 请对此答案进行投票,使其到达顶部 (4认同)
  • 如果 Stackoverflow 有情感,我会用一只雄鹿来回答你 (3认同)
  • 应该是截至 2019 年的选定答案。感谢您花时间添加此重要更新。 (3认同)
  • 这绝对是正确的答案。我很高兴微软终于做到了。感谢您发布。我不确定我是如何错过博客条目的。应该有一个“很酷,新的Microsoft NuGet软件包”的新闻通讯。 (2认同)
  • 为我工作。我在 VS2019 上更新了 2015 年的解决方案。谢谢。 (2认同)
  • [Prism.Wpf](https://www.nuget.org/packages/Prism.Wpf/) 包仍然具有“System.Windows.Interactivity”。如果您使用 prism 框架,则不需要使用`Microsoft.Xaml.Behaviors.Wpf`。 (2认同)

sea*_*020 22

最简单的方法是从NuGet获取它:

http://www.nuget.org/packages/System.Windows.Interactivity.WPF/

  • 请注意,此程序包不是Microsoft的官方发行版 (12认同)

pok*_*oke 19

使用Visual Studio的Blend,它包含在从2013版开始的Visual Studio中,您可以在以下文件夹中找到DLL:

C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.5\Libraries
Run Code Online (Sandbox Code Playgroud)

您必须添加对System.Windows.Interactivity.dll自己的引用,除非您使用Blend for Visual Studio与现有项目添加使用Interactivity命名空间的功能.在这种情况下,Blend将自动添加引用.

  • 这有助于修复我的项目.使用Visual Studio 2017,我们必须使用Visual Studio Installer并在单个组件(SDK类别)中找到它. (7认同)

Con*_*ngo 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>
Run Code Online (Sandbox Code Playgroud)

不要担心PublicKeyToken在所有版本中更改,这是常量,因为它取决于.dll的名称,而不是版本.

确保newVersionappConfig将最终指向的实际版本与您的实际版本相匹配:

在此输入图像描述


won*_*dra 13

另一种方法是修改当前的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.

  • 没有出现在我身上:( (3认同)

may*_*ʎɐɯ 6

我在解决方案中遇到了完全相同的问题,这System.Windows.Interactivity是 Visual Studio 2019 中的一个项目所必需的,我尝试Blend for Visual Studio SDK for .NET从 Visual Studio 2019 单个组件进行安装,但它不存在于其中。

结果,我无法在我的解决方案中构建项目,并且在项目的不同 XAML 部分重复遵循类似的错误:

XML 命名空间“clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity”中不存在标记“Interaction.Behaviors”。

包含所有错误的图像 上面提到的错误快照示例

解决方案,我解决它的方式,是通过从 Microsoft安装适用于 .NET 4 的 Microsoft Expression Blend 软件开发工具包 (SDK)

感谢我的同事@felza,提到System.Windows.Interactivity需要这个 sdk,假设位于此文件夹中:

C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.0
Run Code Online (Sandbox Code Playgroud)

就我而言,它没有安装。我有这个文件夹,里面C:\Program Files (x86)\Microsoft SDKs没有Expression\Blend\.NETFramework\v4.0文件夹。

安装后,所有错误都消失了。