总结起来就是:设计器的版本要跟外部引用的库版本一致,否则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.dllInterop.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设计器中的错误

https://docs.microsoft.com/zh-cn/visualstudio/designers/debugging-or-disabling-project-code-in-xaml-designer?view=vs-2017

2019.07.27

解决COM组件在WPF设计器中命名空间不存在XXX的问题(附带如何在WPF中使用APlayer引擎)的更多相关文章

  1. 让VS2019支持.NET Core WinForms和WPF设计器的临时办法(比微软给出的办法更方便)

    参考以下代码片段,给项目添加NET Framework目标框架,切换到NET472运行时重新生成项目,然后打开设计器界面. 如果遇到设计器报错,尝试以NET472运行时为目标重新生成项目,并重新打开V ...

  2. 让VS2019支持.NET Core WinForms和WPF设计器的临时办法(转)

    .net core 3.0 Preview 6,vs2019 16.1.4 暂时还不支持Winform designer 解决方案: 将Form1修改为其他名字 WinForm   编辑项目文件  加 ...

  3. 解决Visual Studio 2013 XAML设计器异常

    今天使用Visual Studio 2013打开一个windows 应用商店程序的时候,发现出现如下异常:    at System.Windows.Input.Cursor.LoadFromFile ...

  4. 通过用 .NET 生成自定义窗体设计器来定制应用程序

    通过用 .NET 生成自定义窗体设计器来定制应用程序 https://www.microsoft.com/china/MSDN/library/netFramework/netframework/Cu ...

  5. [翻译]用于.NET Core的Windows窗体设计器发布

    本文由微信公众号<开发者精选资讯>翻译首发,转载请注明来源 今天我们很高兴地宣布,.NET Core项目的Windows窗体设计器现在可以在 Visual Studio 2019 16.6 ...

  6. .NET创建宿主设计器--DesignHost、DesignSurface.

    一个窗口在运行时,是这样的: 但是,在设计时,却远比这复杂的多,它需要一个设计器对象:它仅存在于设计时,并连接到运行时存在的对象.   宿主容器 我们可以看到每个窗体和按钮均有与之相关的设计器.这两个 ...

  7. Windows 窗体设计器(Windows Forms Designer)入门

      Visual Studio 2010 更新:2010 年 9 月 Windows 窗体设计器提供多个用于生成 Windows 窗体应用程序的工具. 本演练阐释如何使用设计器提供的各种工具生成应用程 ...

  8. WinForms项目升级.Net Core 3.0之后,没有WinForm设计器?

    目录 .NET Conf 2019 Window Forms 设计器 .NET Conf 2019 2019 9.23-9.25召开了 .NET Conf 2019 大会,大会宣布了 .Net Cor ...

  9. 可视化流程设计——流程设计器演示(基于Silverlight)

    上一篇文章<通用流程设计>对鄙人写的通用流程做了一定的介绍,并奉上了相关源码.但一个好的流程设计必少不了流程设计器的支持,本文将针对<通用流程设计>中的流程的设计器做一个简单的 ...

随机推荐

  1. Spring Cloud Gateway(十一):全局过滤器GlobalFilter

    本文基于 spring cloud gateway 2.0.1 1.简介 GlobalGilter 全局过滤器接口与 GatewayFilter 网关过滤器接口具有相同的方法定义.全局过滤器是一系列特 ...

  2. hive select 出现问题 SemanticException

    由于把hadoop的以下配置项 <property> <name>fs.defaultFS</name> <value>hdfs://localhost ...

  3. React中兄弟组件传值

    兄弟组件传值 实际上是间接的通过第三方来实现传值,举例,第一个儿子把值传给父亲,父亲在把这个值传给第二个儿子,这样就实现了兄弟组件传值 来看代码: 父组件代码 import React from 'r ...

  4. Linux+Apache环境下安装SSL证书

    一.安装证书 (温馨提示:安装证书前请先备份您需要修改的服务器配置文件) 1.确认证书文件及证书路径.  例证书文件为:zzidc.com.jks,放置目录为Tomcat的conf目录下.  2.配置 ...

  5. 2019 SDN第一次阅读作业

    目录 阅读 文章链接 阅读 阅读文章<软件定义网络(SDN)研究进展>,并根据所阅读的文章,书写一篇博客,回答以下问题(至少3个): 1.为什么需要SDN?SDN特点? 背景:传统网络的层 ...

  6. 大数据应用期末总评Hadoop综合大作业

    作业要求来源于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3339 1.将爬虫大作业产生的csv文件上传到HDFS 此次作业选取的 ...

  7. 第09组 Alpha冲刺(1/4)

    队名:软工9组 组长博客: https://www.cnblogs.com/cmlei/ 作业博客: 组员进度 ● 组员一(组长) 陈明磊 ​ ○过去两天完成了哪些任务 ​ ●文字/口头描述 ​ 初步 ...

  8. RSA 签名、验证、加密、解密帮助类

    import java.io.IOException; import java.security.InvalidKeyException; import java.security.KeyFactor ...

  9. linux centos7 防止暴力破解

    系统 centos 7.4 系统, 不知道的可以用 cat /etc/redhat-release 查看 利用到了linux 系统的日志,每次我们登陆服务器时,如果有登陆认证失败的情况,会在服务器的/ ...

  10. android RelativeLayout实现左中右布局

    RelativeLayout实现左中右布局   <RelativeLayout android:layout_width="match_parent" android:lay ...