ARCGIS PRO SDK 使用条件管理 Pro UI

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 事件,使其如下所示:ToggleTabToggleState

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>
  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ArcGIS Pro SDK是用于创建ArcGIS Pro加载项的开发工具包。您可以使用ArcGIS Pro SDK来扩展ArcGIS Pro的功能,添加自定义工具、面板、任务和其他功能。\[1\] 要安装ArcGIS Pro SDK 3.0,您需要使用Visual Studio 2022,并从Visual Studio Marketplace搜索并安装以下三个扩展:ArcGIS Pro SDK for .NET,ArcGIS Pro SDK for .NET(Utilities),ArcGIS Pro SDK for .NET(Migration)\[1\]。请注意,ArcGIS Pro SDK for .NET扩展只能集成到Visual Studio 2022中,建议使用版本17.2或更高版本\[2\]。 ArcGIS Pro SDK for .NET提供了三个不同的扩展名(.vsix文件):ArcGIS Pro SDK for .NET用于创建ArcGIS Pro加载项的工程和项模板的集合,ArcGIS Pro SDK for .NET(Utilities)用于帮助创建ArcGIS Pro加载项的实用程序的集合,ArcGIS Pro SDK for .NET(Migration)用于将ArcGIS Pro SDK 2.x扩展模块迁移到ArcGIS Pro SDK 3.0 for .NET\[3\]。 总结来说,ArcGIS Pro SDK是用于创建ArcGIS Pro加载项的开发工具包,您可以使用它来扩展ArcGIS Pro的功能。要安装ArcGIS Pro SDK 3.0,您需要使用Visual Studio 2022,并从Visual Studio Marketplace安装相应的扩展。 #### 引用[.reference_title] - *1* *2* *3* [VS2022中ArcGIS Pro SDK for .NET安装和卸载指南](https://blog.csdn.net/u012685544/article/details/126317090)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值