如何在WPF程序中使用ArcGIS Engine的控件

原文 http://www.gisall.com/html/47/122747-4038.htmlhtml

WPF(Windows Presentation Foundation)是美國微軟公司推出.NET Framework 3.0的組成部分之一,它是一套基於XML、.NET Framework、矢量繪圖(vector graphic)技術的展現層(presentation layer)開發框架,微軟視其爲下一代用戶界面(user interface)技術,將普遍被用於下一代的Windows平臺(Windows Vista)的界面開發。框架

WPF使用一種新的XAML(eXtensible Application Markup Language)語言來開發界面,這將把界面開發以及後臺邏輯很好的分開,下降了耦合度,使用戶界面設計師與程序開發者能更好的合做,下降維護和更新的成本。函數

而ArcGIS Engine開發包只提供了WinForm控件,如Map Control、Toc Control、Toolbar Control等。那麼假如咱們要在WPF程序中使用ArcGIS Engine,那應該如何調用呢?設計

ArcGIS Engine爲咱們提供了兩中途徑:orm

<!--[if !supportLists]-->一、 <!--[endif]-->使用WindowsFormsHost管理ArcGIS Engine WinForm控件,並進行互操做。htm

<!--[if !supportLists]-->二、 <!--[endif]-->使用WindowsFormHost加載WinForm窗體,這樣在WinForm中就能像平時同樣加載Engine的控件了。對象

第一種方法須要使用代碼了加載值Engine控件,示例代碼以下:事件

首先在主程序的Xaml文件裏添加WindowsFormsHost對象:開發

<my:WindowsFormsHost Name="mapHost" Margin="174,30,0,22" />get

而後在主程序的構造函數裏添加代碼加載Engine控件

mapControl = new AxMapControl ();

mapHost.Child = mapControl;

這樣就能夠把Engine的WinForm控件加載到WPF程序中了。

這種方式的缺點就是,沒法經過Visual Studio的用戶設計界面來設置控件的屬性。

 

第二種方法的思路以下:

在WPF程序中添加一個WinForm窗體對象,裏面能夠自由地使用Engine控件。

而後在WPF主程序中,經過某項事件,如Application的StartUp事件,實例化該窗體,並調用它的show方法顯示。

當使用這兩種方法來調用Engine控件時,都不要忘記,ArcGIS 10在調用全部ArcObject對象前,都須要進行運行時綁定,示例代碼以下:

ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Engine);

相關文章
相關標籤/搜索