解决COM组件在WPF设计器中命名空间不存在XXX的问题(附带如何在WPF中使用APlayer引擎)
总结起来就是:设计器的版本要跟外部引用的库版本一致,否则XAML设计器就会显示不出来。

例如你的程序是X64的,但是引用的COM组件是32位的,就会显示不出来。这里的建议是:编译一个32位的COM中间件,供界面显示,实际调用还是那个64位的库。
在WPF中,当使用了绑定,引用预定义的资源,以及转换,验证等功能时,如果版本不对应,就会看到以下界面(说明:WPF程序生成版本是X64,程序中定义的资源,转换器等也属于64位,如果设计器选择的是AnyCpu或X86,那界面就会显示不出来。)

如果设计器和程序版本不对应,不管怎么编译,也还是不会显示,
以前遇到这个问题的时候,找了很多办法都没有解决,包括网上说的改成Release再改成Debug。最后只能注释掉Converter和COM组件引用的部分。
现在终于搞清楚了,是这个原因。
把程序版本改成X64,设计器也改成X64


这个时候我们再编译一下,XAML设计器就可以正确显示了

同理,设计器和程序版本都改成X86也是可以正常显示的。注意对应就行了。
==================================================================================================================================
下面以迅雷看看播放器引擎APlayer来演示一下,
APlayer是一个COM组件,网址是:http://aplayer.open.xunlei.com/
下载APlayerSDK.zip,解压,运行install.bat来注册COM组件

新建一个Winform工程
在工具箱中选择“选择项”

再选择COM组件,钩上APlayer

在工具箱中将APlayer拖到界面上,再生成项目,找到生成目录下的AxInterop.APlayer3Lib.dll和Interop.APlayer3Lib.dll

再新建一个WPF应用程序
添加引用,先选择WindowsFormIntegration,System.Windows.Forms这两个程序集
再选择前面生成的AxInterop.APlayer3Lib.dll和Interop.APlayer3Lib.dll,
在MainWIndow.xaml中输入以下代码
<Window x:Class="WPF调用APlayer.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WPF调用APlayer"
mc:Ignorable="d"
xmlns:aplayer="clr-namespace:AxAPlayer3Lib;assembly=AxInterop.APlayer3Lib"
Title="MainWindow" Height="" Width="">
<Grid>
<WindowsFormsHost>
<aplayer:AxPlayer x:Name="Aplayer"/>
</WindowsFormsHost>
</Grid>
</Window>
运行结果:

需要注意的是SDK中的其它文件也要拷到运行目录下,那几个已经注册的DLL可以忽略,我这里全都拷过去了

APlayer是32位的,所以WPF设计器中选择AnyCPU可以显示。
如果选择X64,就会出现

不过界面还是能够显示,这里也说明一个问题,X64的设计器对于X86的程序集虽然不识别,但界面还是能显示出来(引用的样式,资源都会不生效),相反就不行了。
最后,附上如何调试XAML设计器中的错误
2019.07.27
解决COM组件在WPF设计器中命名空间不存在XXX的问题(附带如何在WPF中使用APlayer引擎)的更多相关文章
- 让VS2019支持.NET Core WinForms和WPF设计器的临时办法(比微软给出的办法更方便)
参考以下代码片段,给项目添加NET Framework目标框架,切换到NET472运行时重新生成项目,然后打开设计器界面. 如果遇到设计器报错,尝试以NET472运行时为目标重新生成项目,并重新打开V ...
- 让VS2019支持.NET Core WinForms和WPF设计器的临时办法(转)
.net core 3.0 Preview 6,vs2019 16.1.4 暂时还不支持Winform designer 解决方案: 将Form1修改为其他名字 WinForm 编辑项目文件 加 ...
- 解决Visual Studio 2013 XAML设计器异常
今天使用Visual Studio 2013打开一个windows 应用商店程序的时候,发现出现如下异常: at System.Windows.Input.Cursor.LoadFromFile ...
- 通过用 .NET 生成自定义窗体设计器来定制应用程序
通过用 .NET 生成自定义窗体设计器来定制应用程序 https://www.microsoft.com/china/MSDN/library/netFramework/netframework/Cu ...
- [翻译]用于.NET Core的Windows窗体设计器发布
本文由微信公众号<开发者精选资讯>翻译首发,转载请注明来源 今天我们很高兴地宣布,.NET Core项目的Windows窗体设计器现在可以在 Visual Studio 2019 16.6 ...
- .NET创建宿主设计器--DesignHost、DesignSurface.
一个窗口在运行时,是这样的: 但是,在设计时,却远比这复杂的多,它需要一个设计器对象:它仅存在于设计时,并连接到运行时存在的对象. 宿主容器 我们可以看到每个窗体和按钮均有与之相关的设计器.这两个 ...
- Windows 窗体设计器(Windows Forms Designer)入门
Visual Studio 2010 更新:2010 年 9 月 Windows 窗体设计器提供多个用于生成 Windows 窗体应用程序的工具. 本演练阐释如何使用设计器提供的各种工具生成应用程 ...
- WinForms项目升级.Net Core 3.0之后,没有WinForm设计器?
目录 .NET Conf 2019 Window Forms 设计器 .NET Conf 2019 2019 9.23-9.25召开了 .NET Conf 2019 大会,大会宣布了 .Net Cor ...
- 可视化流程设计——流程设计器演示(基于Silverlight)
上一篇文章<通用流程设计>对鄙人写的通用流程做了一定的介绍,并奉上了相关源码.但一个好的流程设计必少不了流程设计器的支持,本文将针对<通用流程设计>中的流程的设计器做一个简单的 ...
随机推荐
- 缺陷描述(Description)
[tips1] 缺陷报告的用途在于: 记录bug 对bug进行分类(发现者.日期.版本.模块.严重程度.优先级) 跟踪bug(new-open-fixed-closed) 对bug进行统计分析.总结 ...
- SqlServer 数据库同步的两种方式 (发布、订阅),主从数据库之间的同步
最近在琢磨主从数据库之间的同步,公司正好也需要,在园子里找了一下,看到这篇博文比较详细,比较简单,本人亲自按步骤来过,现在分享给大家. 在这里要提醒大家的是(为了更好的理解,以下是本人自己理解,如有错 ...
- torch
1.从数据直接构建tensor x = torch.tensor([5.5,3]) 2.从已有的tensor构建一个tensor.这些方法会重用原来tensor的特征. x = x.new_ones( ...
- 【数值分析】Python实现Lagrange插值
一直想把这几个插值公式用代码实现一下,今天闲着没事,尝试尝试. 先从最简单的拉格朗日插值开始!关于拉格朗日插值公式的基础知识就不赘述,百度上一搜一大堆. 基本思路是首先从文件读入给出的样本点,根据输入 ...
- 关于Django中的数据库操作API之distinct去重的一个误传
转载自http://www.360doc.com/content/18/0731/18/58287567_774731201.shtml django提供的数据库操作API中的distinct()函数 ...
- js页面 :函数名 is not defined
最初的写法如下 function GetDateStr(AddDayCount) { var dd = new Date(); dd.setDate(dd.getDate() + AddDayCoun ...
- pip3的国内安装源
1,清华源 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualen 2,豆瓣源 pip3 install -i https ...
- 在asp.net core中使用NLog
第一步:nuget 引入 NLog.Web.AspNetCore 4.5+ 第二步:放入nlog.config <?xml version="1.0" encoding= ...
- linux下node.js 查版本号和更新 how to update node
我用的Mac,不是windows,不太清楚那个怎么搞. Linux下就是终端直接命令 //查版本号 node --version // v6.10.1 我很久没更了 //更新 //先清理Npm的cac ...
- oracle的insert的时候&符号如何插入
chr(38)替换& insert into table values( 'http://localhost:8080/index.action?username=138& ...