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 事件,使其如下所示: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>
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!