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

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

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为我们提供了两中途径:

<!--[if !supportLists]-->1、 <!--[endif]-->使用WindowsFormsHost管理ArcGIS Engine WinForm控件,并进行互操作。

<!--[if !supportLists]-->2、 <!--[endif]-->使用WindowsFormHost加载WinForm窗体,这样在WinForm中就能像平时一样加载Engine的控件了。

第一种方法需要使用代码了加载值Engine控件,示例代码如下:

首先在主程序的Xaml文件里添加WindowsFormsHost对象:

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

然后在主程序的构造函数里添加代码加载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);

时间: 2024-11-18 07:31:38

如何在WPF程序中使用ArcGIS Engine的控件的相关文章

使用XAML在WPF项目中承载ArcGIS Engine地图控件开发

原文 http://blog.csdn.net/flexmapserver/article/details/5868882 用Windows Form进行ArcGIS Engine二次开发时常见的形式,当然也可以用WPF来进行ArcEngine的二次开发.         由于WPF很方便承载Windows Form控件,而Map Control.Toolbar Control.TOC Control等都是.NET 控件,当然也可以用XAML来承载ArcEngine的这些控件来开发了.     

在C#窗体程序中,如何判断textbox控件中输入的格式是浮点型

问题描述 在C#窗体程序中,如何判断textbox控件中输入的格式是浮点型?求教,谢谢咯! 解决方案 解决方案二:简单点try{float.Parse();}catch{//不是}解决方案三:1L方法最简单,还可以用正则判断解决方案四:Regex.IsMatch(strValue,@"^d+.d+$")解决方案五:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSyst

C# Winfrom项目,如何在from窗体中控制两个timer控件时间的同步显示

问题描述 C# Winfrom项目,如何在from窗体中控制两个timer控件时间的同步显示 在C# Winfrom项目中,一个from窗体,两个timer控件(timer1和timer2),两个Label控件(labe1和label2), timer1是实现0到1分钟的倒计时显示在显示labe1中,timer2是实现到1分钟后自动显示当前时间到label2中. 两个button控件(button1和button2).button1和button2分别控制timer1的开始和暂停. timer1

在WPF工程中如何调用Windows窗体控件项目中控件属性、方法以及事件????

问题描述 运行环境:VS2008使用的工程:WPF应用程序以及Windows窗体控件库使用过程:新建一个Windows窗体控件库项目,这里名字叫MyControl新建一个Form窗体用来承载用户控件,这个Form窗体叫UerControl1,对应的文件名字为:UerControl1.vb在项目中添加对用户控件的必要的引用在项目中添加一个我下载的用户控件,这里名字叫A新建一个WPF工程,这里名字叫WPFProjWindow1.xaml文件的代码如下:<Windowx:Class="Windo

如何在Page_Load事件中获取引起回传的控件

问题描述 页面上有个DropDownList和一个Button.DropDownList设置了AutoPostBack为true,所以现在DropDownList的选项更新以及Button的Click都会引起页面回传由于页面上有很多内容是动态生成的,所以我要在Page_Load事件中根据引起回传的控件的不同对那些动态生成内容进行处理,而不是在具体的控件事件中,要怎么做? 解决方案 解决方案二:page_init中生成就可以了.解决方案三:动态生成的控件,永远的痛啊解决方案四:我应可JS生成控件,

如何在IE浏览器中调用未签名ActiveX控件的设置方法?

  ActiveX控件做为IE浏览器专门一种插件程序,在我们使用IE过程中是会经常遇到的.比如当我们使用网银或支付宝等安全要求比较高的网站,都会提示我们需要安装ActiveX控件. 只有安装ActiveX控件以后我们才能正常登陆这些网站,以及使用这些网站的服务.一般我们安装的ActiveX控件都是带签名的,这种ActiveX控件就表明属于安全的.但是有时候当开发者开发出ActiveX控件时需要进行调试,但是这个时候还没有数字签名时,我们如何才能让IE浏览器安装调用未签名的ActiveX控件呢?这

在ASP.NET程序中使用报表查看器控件并传递用户凭据

第一步,需要创建一个自定义的Credentails类型 public class CustomReportCredentials : Microsoft.Reporting.WebForms.IReportServerCredentials { // local variable for network credential. private string _UserName; private string _PassWord; private string _DomainName; publi

如何在c程序中使用汇编编程

如何在c程序中使用汇编编程 方法一:在每个汇编语句前加asm即可.如 void reset_data(void) { asm movr0,#0dfh asmdo_resetdata: asm mov@r0,#00h asm djnzr0,do_resetdata return; } 方法二:把asm作为关键字后续汇编用大括号括起来即可.如下: void reset_data(void) { asm {movr0,#0dfh do_resetdata: mov@r0,#00h djnzr0,do_

代码-新手求问wpf程序中关于路由事件的问题

问题描述 新手求问wpf程序中关于路由事件的问题 我放了两个Button控件 public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); Grid1.AddHandler(Button.ClickEvent,new RoutedEventHandler(onClick)); } public void onClick(object sender, RoutedEventArgs e