赞
踩
ARCGIS PRO UI简单介绍以下:
第一步:在Config.daml中在</AddInfo>标签下加上条件<conditions>标签(必须添加的)
- <conditions>
- <!-- 定义条件 ,此处定义了两个--Tab 另一个为 group>
- <insertCondition id="Tab_Toggle_condition" caption="Toggle Tab">
- <!-- 我们的条件基于此基础状态设置为真或假 --就时开关,如果基础状态设置为真,结果就为假>
- <state id="tab_state" />
- </insertCondition>
- <insertCondition id="Controls_Toggle_condition" caption="Toggle Controls">
- <!-- 我们的条件基于此基础状态设置为真或假 -->
- <state id="controls_state" />
- </insertCondition>
- </conditions>
第二步:在 <modules>....... </modules>之间定义以下DAML代码。
- <!-- 定义模块 id className autoLoad caption
- <insertModule id="StatesAndConditions_Module" className="Module1" autoLoad="false" caption="Module1">
- <!-- 将该控件托管在单独的选项卡上-->
- <tabs>
- <!-- 定义单独的选项卡,定义了一个TAB(在菜单上 New Custom Tab),由两个group(group2、group3)组构成-->
- <tab id="StatesAndConditions_Tab" caption="New Custom Tab" condition="Tab_Toggle_condition">
- <group refID="StatesAndConditions_Group2" />
- <group refID="StatesAndConditions_Group3" />
- </tab>
- </tabs>
- <groups>
- <!-- 定义三各group(组),StatesAndConditions_Group1、StatesAndConditions_Group2、StatesAndConditions_Group3,StatesAndConditions_Group1在加载项菜单(appearsOnAddInTab="true"),其余在New Custom Tab定义(appearsOnAddInTab="false")-->
- <!--appearsOnAddInTab="true" 当前组放在加载项菜单里(加载项Tab)-->
- <group id="StatesAndConditions_Group1" caption="组1" appearsOnAddInTab="true">
- <!-- 定义图标大小 -->
- <button refID="StatesAndConditions_ToggleTab" size="large" />
- </group>
- <!--appearsOnAddInTab="false" 当前组只放在定义TAB(菜单里)-->
- <group id="StatesAndConditions_Group2" caption="组2" appearsOnAddInTab="false">
- <!-- host controls within groups -->
- <button refID="StatesAndConditions_ToggleControls" size="large" />
- </group>
- <!--appearsOnAddInTab="false" 当前组只放在定义TAB(菜单里)-->
- <group id="StatesAndConditions_Group3" caption="组3" appearsOnAddInTab="false" condition="Controls_Toggle_condition">
- <!-- 组内的控件 -->
- <!--ARCGIS Pro Core Pro命令-->
- <toolPalette refID="esri_mapping_newMapPalette" />
- <button refID="esri_core_saveProjectButton" />
- <button refID="esri_core_saveProjectAsButton" />
- <gallery refID="esri_mapping_bookmarksNavigateGallery" />
- <button refID="esri_mapping_mapContextMenu_ExportMap" />
- </group>
- </groups>
- <controls>
- <!-- 自定义控件,激活或隐藏定义-->
- <button id="StatesAndConditions_ToggleTab" caption="切换自定义选项卡" className="ToggleTab" 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>
- <button id="StatesAndConditions_ToggleControls" caption="切换控制可见性" className="ToggleControls" 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>
第三步: 复制新方法的以下代码,并将其粘贴到区域下方的文件中。此方法在激活和停用之间切换传递到方法中的状态。
C+代码:在ToggleStateModule1.csOverrides文件中
- #region Toggle State
- /// <summary>
- /// Activate or Deactivate the specified state. State is identified via
- /// its name. Listen for state changes via the DAML <b>condition</b> attribute
- /// </summary>
- /// <param name="stateID"></param>
- public static void ToggleState(string stateID)
- {
- if (FrameworkApplication.State.Contains(stateID))
- {
- FrameworkApplication.State.Deactivate(stateID);
- }
- else
- {
- FrameworkApplication.State.Activate(stateID);
- }
- }
-
- #endregion Toggle State
VB代码:在Module1.vb文件中,粘贴
- Public Shared Sub ToggleState(stateID As String)
- If (FrameworkApplication.State.Contains(stateID)) Then
- FrameworkApplication.State.Deactivate(stateID)
- Else
- FrameworkApplication.State.Activate(stateID)
- End If
- End Sub
第三步:更新调用该方法的按钮的 click 事件,使其如下所示:ToggleControlsToggleState
C+代码:
- protected override void OnClick()
- {
- Module1.ToggleState("controls_state");
- }
vb代码:
- Protected Overrides Sub OnClick()
- Module1.ToggleState("controls_state")
- End Sub
第四步:更新调用该方法的按钮的 click 事件,使其如下所示:ToggleTab
ToggleState
C+代码:
- protected override void OnClick()
- {
- Module1.ToggleState("tab_state");
- }
vb代码:
- Protected Overrides Sub OnClick()
- Module1.ToggleState("tab_state")
- End Sub
第五步:生成和测试代码效果如下:
1.启动工程,这将启动 ArcGIS Pro。 创建新工程或在开始页面打开时打开现有工程。
2.在“加载项”选项卡中,单击新的“Toggle Custom Tab”按钮。这将激活条件,允许带有“New Custom Tab”标题的新选项卡可见。tab_state
3.单击新选项卡以查找带有单个按钮的控件组,标题为“Toggle Controls Visibility”。
按 Toggle Controls Visibility,这将激活条件,使新的 Controls Group 变为可见。controls_state
再次按 Toggle Controls Visibility 停用状态/条件并隐藏控件组。
再按 Toggle Controls Visibility
在“加载项”选项卡上,再次单击“Toggle Custom Tab”以停用状态/条件并隐藏“New Custom Tab”。
注:如果需要把你的控件放入已有的菜单里:
- <updateModule refID="esri_core_module">
- <tabs>
- <updateTab refID="esri_core_insertTab">
- <insertGroup refID="UpdateInsertTab_Group1" placeWith="esri_project_styles" insert="before"/>
- </updateTab>
- </tabs>
- </updateModule>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。