ArcGIS Pro SDK 框架 1
目录
- ArcGIS Pro SDK 框架 1
- 1 如何在停靠窗格可见或隐藏时订阅和取消订阅事件
- 2 执行命令
- 3 设置当前工具
- 4 激活选项卡
- 5 激活/停用状态 - 修改条件
- 6 确定应用程序是否繁忙
- 7 获取应用程序主窗口
- 8 关闭 ArcGIS Pro
- 9 获取 ArcGIS 专业版
- 10 关闭特定窗格
- 11 激活窗格
- 12 获取有关当前安装的加载项的信息
- 13 查找码头窗格
- 14 码头窗格属性和方法
- 15 码头窗格撤消/重做
- 16 查找停靠窗格并获取其视图模型
- 17 打开“后台”选项卡
1 如何在停靠窗格可见或隐藏时订阅和取消订阅事件
private SubscriptionToken _eventToken = null;
protected override void OnShow(bool isVisible)
{if (isVisible && _eventToken == null) {_eventToken = MapSelectionChangedEvent.Subscribe(OnMapSelectionChangedEvent);}if (!isVisible && _eventToken != null) {MapSelectionChangedEvent.Unsubscribe(_eventToken);_eventToken = null;}
}
private void OnMapSelectionChangedEvent(MapSelectionChangedEventArgs obj)
{MessageBox.Show("选择发生了变化");
}
2 执行命令
IPlugInWrapper wrapper = FrameworkApplication.GetPlugInWrapper("esri_editing_ShowAttributes");
var command = wrapper as ICommand; if ((command != null) && command.CanExecute(null))command.Execute(null);
3 设置当前工具
FrameworkApplication.SetCurrentToolAsync("esri_mapping_selectByRectangleTool");
ICommand cmd = FrameworkApplication.GetPlugInWrapper("esri_mapping_selectByRectangleTool") as ICommand;
if ((cmd != null) && cmd.CanExecute(null))cmd.Execute(null);
4 激活选项卡
FrameworkApplication.ActivateTab("esri_mapping_insertTab");
5 激活/停用状态 - 修改条件
if (activate)FrameworkApplication.State.Activate("someState");
elseFrameworkApplication.State.Deactivate("someState");
6 确定应用程序是否繁忙
bool isbusy = FrameworkApplication.IsBusy;
7 获取应用程序主窗口
System.Windows.Window window = FrameworkApplication.Current.MainWindow;Rect rect = System.Windows.SystemParameters.WorkArea;
FrameworkApplication.Current.MainWindow.Left = rect.Left + (rect.Width - FrameworkApplication.Current.MainWindow.ActualWidth) / 2;
FrameworkApplication.Current.MainWindow.Top = rect.Top + (rect.Height - FrameworkApplication.Current.MainWindow.ActualHeight) / 2;
8 关闭 ArcGIS Pro
FrameworkApplication.Close();
9 获取 ArcGIS 专业版
string version = System.Reflection.Assembly.GetEntryAssembly().GetName().Version.ToString();
10 关闭特定窗格
string _viewPaneID = "my pane";
IList<uint> myPaneInstanceIDs = new List<uint>();
foreach (Pane pane in FrameworkApplication.Panes)
{if (pane.ContentID == _viewPaneID){myPaneInstanceIDs.Add(pane.InstanceID); }
}
foreach (var instanceID in myPaneInstanceIDs)
{FrameworkApplication.Panes.ClosePane(instanceID);
}
11 激活窗格
var mapPanes = ProApp.Panes.OfType<IMapPane>();
foreach (Pane pane in mapPanes)
{if (pane.Caption == "MyMap"){pane.Activate();break;}
}
12 获取有关当前安装的加载项的信息
var addin_infos = FrameworkApplication.GetAddInInfos();
StringBuilder sb = new StringBuilder();foreach (var info in addin_infos)
{if (info == null)break;sb.AppendLine($"Addin: {info.Name}");sb.AppendLine($"Description {info.Description}");sb.AppendLine($"ImagePath {info.ImagePath}");sb.AppendLine($"Author {info.Author}");sb.AppendLine($"Company {info.Company}");sb.AppendLine($"Date {info.Date}");sb.AppendLine($"Version {info.Version}");sb.AppendLine($"FullPath {info.FullPath}");sb.AppendLine($"DigitalSignature {info.DigitalSignature}");sb.AppendLine($"IsCompatible {info.IsCompatible}");sb.AppendLine($"IsDeleted {info.IsDeleted}");sb.AppendLine($"TargetVersion {info.TargetVersion}");sb.AppendLine($"ErrorMsg {info.ErrorMsg}");sb.AppendLine($"ID {info.ID}");sb.AppendLine("");
}
System.Diagnostics.Debug.WriteLine(sb.ToString());
MessageBox.Show(sb.ToString(), "Addin Infos");
13 查找码头窗格
var pane = FrameworkApplication.DockPaneManager.Find("esri_core_ProjectDockPane");
14 码头窗格属性和方法
var pane = FrameworkApplication.DockPaneManager.Find("esri_core_ProjectDockPane");
bool visible = pane.IsVisible;
pane.Activate();
DockPaneState state = pane.DockState;
pane.Pin();
pane.Hide();
15 码头窗格撤消/重做
var pane = FrameworkApplication.DockPaneManager.Find("esri_core_contentsDockPane");
OperationManager manager = pane.OperationManager;
if (manager != null)
{if (manager.CanUndo)await manager.UndoAsync();if (manager.CanRedo)await manager.RedoAsync();manager.ClearUndoCategory("Some category");manager.ClearRedoCategory("Some category");
}
16 查找停靠窗格并获取其视图模型
Dockpane1ViewModel vm = FrameworkApplication.DockPaneManager.Find("MySample_Dockpane") as Dockpane1ViewModel;
17 打开“后台”选项卡
FrameworkApplication.OpenBackstage("esri_core_aboutTab");