新增的自定义控件一般放在默认的【加载项】选项卡下,但是根据需求,我们可能需要将控件放在新的自定义选项卡下,在自定义选项卡添加系统自带的控件,将自定义的按钮等控件放在右键菜单栏里以方便使用,等等。

下面就以一个小例子来具体做一下。

新建一个项目,命名为【UIManager2】,再添加1个ArcGIS Pro 按钮【UIManager2_Button1】作为示例按钮。


一、新建自定义选项卡、自定义组,添加自定义按钮

ArcGIS Pro工具栏的层级关系为【选项卡Tab、组Group、控件Control】。

新建选项卡【UIManager2_Tab】,再新建组【UIManager2_Group1】放置于选项卡【UIManager2_Tab】之下,再把上一步中添加的按钮【UIManager2_Button1】放在组【UIManager2_Group1】之下。

更新Config.daml文件中的</insertModule>模块即可实现以上功能。

    <insertModule id="UIManager2_Module" className="Module1" autoLoad="false" caption="Module1"><tabs><tab id="UIManager2_Tab" caption="UI管理器"><!--添加自定义的组--><group refID="UIManager2_Group1" /></tab></tabs><groups><group id="UIManager2_Group1" caption="示例组" appearsOnAddInTab="false"><!-- 添加自定义按钮 --><button refID="UIManager2_Button1" size="large" /></group></groups><controls><button id="UIManager2_Button1" caption="示例按钮" className="Button1" loadOnClick="true" smallImage="pack://application:,,,/ArcGIS.Desktop.Resources;component/Images/GenericButtonBlue16.png" largeImage="pack://application:,,,/ArcGIS.Desktop.Resources;component/Images/GenericButtonBlue32.png"><tooltip heading="Tooltip Heading">Tooltip text<disabledText /></tooltip></button></controls></insertModule>

实现结果如下:


二、在自定义选项卡中添加系统自带的组

在新建选项卡【UIManager2_Tab】下添加一个系统自带的组【esri_geoprocessing_analysisTools】,即【地理处理】。

更新Config.daml文件中的</tab>模块。

        <tab id="UIManager2_Tab" caption="UI管理器"><!--添加自定义的组--><group refID="UIManager2_Group1" /><!--添加系统自带的组--><group refID="esri_geoprocessing_analysisTools" /></tab>

实现结果如下:

每个系统自带选项卡、组、菜单、控件都有专有的ID。具体可以查看官方文档。

DAML-ID查询https://github.com/Esri/arcgis-pro-sdk/wiki/DAML-ID-Reference-ADCore.daml另外还有一种方便的方法可以查询控件的ID。打开ArcGIS Pro,点击菜单【工程】—【选项】—【自定义功能区】,勾选【在屏幕提示中显示命令ID】。

设置后,把鼠标放在工具栏或是右键菜单里的控件上时,提示信息会显示这个控件的ID。这样查找起来就更有目的性了。

至于选项卡、组、菜单我没有找到更好的查找方法,只能啃文档了,如果有大神知道更好的方法,望留言告知!


三、在自定义组中添加系统自带的控件

在自定义组中同样可以添加系统自带的按钮、动态菜单、小型组等各种控件。

更新Config.daml文件中的</groups>模块。

      <groups><group id="UIManager2_Group1" caption="示例组" appearsOnAddInTab="false"><!-- 添加自定义按钮 --><button refID="UIManager2_Button1" size="large" /><!-- 添加系统自带的按钮、动态菜单、小型组等控件 --><button refID="esri_core_previewZoomFullButton" size="large" /><dynamicMenu refID="esri_dockPaneSetDynamicMenu" size="large" /><subgroup refID="esri_core_WindowControls" /></group></groups>

实现结果如下:


四、添加按钮至系统自带的右键菜单

将自定义的按钮【UIManager2_Button1】添加到要素类的右键菜单里。

在</insertModule>模块下,新写一段</updateModule>代码块,用于更新系统自带的右键菜单。

 <!--更新系统自带的工具菜单、工具栏等--><updateModule refID="esri_mapping"><menus><!--将自定义的工具添加到要素类的右键菜单--><updateMenu refID="esri_mapping_layerContextMenu"><insertButton refID="UIManager2_Button1" placeWith="esri_mapping_copySelectedLayersButton"/></updateMenu></menus></updateModule>

这里的placeWith参数决定添加进去的控件所在的位置,如果不填,默认放在菜单的最后。我这里放在复制按钮【esri_mapping_copySelectedLayersButton】后面。(这里用上面介绍的第二种查找按钮控件ID的方法就方便很多了)

实现结果如下:


五、工程文件分享

最后,放上工程文件的链接:

UIManager2https://pan.baidu.com/s/1DDv02ZaQo217mMQgkV3m2g?pwd=o157

【ArcGIS Pro二次开发】(5):UI管理_自定义控件的位置相关推荐

  1. 【ArcGIS Pro二次开发】系列学习笔记,持续更新,记得收藏

    一.前言 这个系列是本人的一个学习笔记. 作为一个ArcGIS Pro二次开发的初学者,最困扰的就是无从入手.网上关于ArcGIS Pro二次开发的中文资料极少,官方文档对于我这样的英文苦手又太不友好 ...

  2. 【ArcGIS Pro二次开发】(15):用地用海名称和代码互转

    在国土空间规划中,用地用海的名称和代码是一一对应的,手动修改用地代码后,还需要相应的修改名称,纯纯的重复工作,因此做了这个工具. 之前用Arcpy做过同样的功能的工具,参看这个: ArcGisPro脚 ...

  3. 【ArcGIS Pro二次开发】(6):工程(Project)的基本操作

    在ArcGIS Pro中我们对工程的基本操作一般包括打开.新建.保存等.下面演示在二次开发中如何用代码进行以上操作. 新建一个项目,命名为[ProjectManager],添加8个按钮,命名为[Cre ...

  4. ArcGIS Pro二次开发环境配置及项目创建示例

    一.软件版本 ArcGIS Pro 2.8 Visual Studio 2019 二.组件 ArcGIS Pro 2.8 SDK for .NET: proapp-sdk-templates.vsix ...

  5. 【ArcGIS Pro二次开发】(7):地图(Map)的基本操作

    地图是ArcGIS Pro中的基础起点,也是大多数工程的基础.主要用于显示表示空间数据的图层. 一.地图(Map)的基本操作示例 1.获取当前地图 var map = MapView.Active.M ...

  6. 【ArcGIS Pro二次开发】(8):图层(Layer)的基本操作

    在ArcGIS中,图层(Layer)是地理数据的集合.可以在 ArcGIS Pro中将很多不同类型的数据表示为图层. 图层通常包含矢量(要素)或栅格数据. 图层的类型取决于您拥有的数据类型.其基础结构 ...

  7. 【ArcGIS Pro二次开发】(26):数据筛选器

    在使用[OpenItemDialog]打开数据时,其中一个重要的属性[Filter],可用于筛选要打开的数据.示例代码如下: // 打开文件对话框OpenItemDialog dlg = new Op ...

  8. 【ArcGIS Pro二次开发】(14):使用字典(Dictionary)创建表格(Table)

    在规划工作中,经常需要输入表格数据,如[用地用海分类表]. 之前的经验是做一个Excel表格,通过导入Excel,转换成数据库表格(Tabel). 但这样有一点不好的地方,Excel表格作为输入数据, ...

  9. 【ArcGIS Pro二次开发】(17):打开GDB、SHP、CAD等各种数据

    一.打开GDB数据库 // 输入一个数据库路径string gdbPath = @"C:\Users\Administrator\Documents\ArcGIS\Projects\Test ...

最新文章

  1. 3D 三角形的前面和后面
  2. 创业中创新驱动能力_创业培训课程:创新思维能力塑造
  3. 联合主键三种实现方式
  4. Error:Elements in iteration expect to have ‘v-bind:key‘ directives
  5. Wireshark初步入门
  6. 细说进程、应用程序域与上下文之间的关系(三)—— 深入了解.NET上下文
  7. 计算机办公操作excel,办公中常用的Word及Excel的方法有哪些
  8. hive窗口函数(over)详解
  9. 计算机word的关闭怎么办,为什么我的计算机word文档打开和关闭缓慢
  10. 认识 Iconfont 以及什么是 .eot、.woff、.ttf、.svg
  11. 【接口技术】实验四:8254定时器与计数器
  12. ERP(会计)-主要会计科目表名称
  13. PowerDesigner 15学习笔记:十大模型及五大分类
  14. “===”、“==” 的区别
  15. C语言 | 改变指针变量的值
  16. 专利一通出案待答复和中通出案待答复
  17. android ratingbar不可点击,RatingBar是无法点击的
  18. 北京个人申请车牌号要什么条件?
  19. 数学基础 - 第十九章 一次函数
  20. 跳槽季 | 做「坏」时代的佼佼者

热门文章

  1. 4.5/4.6 磁盘格式化 4.7/4.8 磁盘挂载 4.9 手动增加swap空间
  2. XML编程经验――LIBXML2库使用指南
  3. web语义化之SEO和ARIA
  4. NTP 时间服务器配置
  5. Linux中的阻塞机制
  6. 鸽传书2007是一个局域网通信软件
  7. Debian11.5 最小化安装后更改主机名、安装桌面、设置默认语言、时区、静态IP、局域网DNS等
  8. Android利用Socket与硬件通信之智能家居APP
  9. UGUI sprite editor九宫切图用法
  10. nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression