internal class ActivateMapFrameBtn: Button {
protected override void OnClick()
{
//1. must be on the GUI - dont switch to QueuedTask
//2. Layout view must be active!
if (LayoutView.Active == null)
return;
//3. LayoutView.Active.ActiveMapFrame is the frame that will
// be activated
var map_frameName = "Map Frame";
if (LayoutView.Active.ActiveMapFrame == null ||
LayoutView.Active.ActiveMapFrame.Name != map_frameName) {
//simply select it to make it the active one
var selFrame = LayoutView.Active.Layout.GetElementsAsFlattenedList()
.OfType<MapFrame>().FirstOrDefault(mf => mf.Name == map_frameName);
if (selFrame == null)
return; //not found
LayoutView.Active.Layout.SelectElement(selFrame);
}
//4. Does the ActiveMapFrame have a valid map?
if (LayoutView.Active.ActiveMapFrame?.Map == null)
return; //invalid map frame - probably empty
//esri_layouts_activateMap - activate
//esri_layouts_deactivateMap - deactivate
//Do the activation
var plugin =
FrameworkApplication.GetPlugInWrapper("esri_layouts_activateMap")
as System.Windows.Input.ICommand;
if (plugin.CanExecute(null))
plugin.Execute(null);
}
}