解決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.dllInterop.APlayer3Lib.dll

在MainWIndow.xaml中輸入以下代碼

 1 <Window x:Class="WPF調用APlayer.MainWindow"
 2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 4         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 5         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 6         xmlns:local="clr-namespace:WPF調用APlayer"
 7         mc:Ignorable="d"
 8         xmlns:aplayer="clr-namespace:AxAPlayer3Lib;assembly=AxInterop.APlayer3Lib"
 9         Title="MainWindow" Height="350" Width="525">
10     <Grid>
11         <WindowsFormsHost>
12             <aplayer:AxPlayer x:Name="Aplayer"/>
13         </WindowsFormsHost>
14     </Grid>
15 </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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM