A project can contain multiple layouts. A layout view is a pane that displays the view of a layout. Layout views are the primary interface used to display, navigate, and select layout elements. The layout being visualized in the view can be accessed via the Layout property.
There can be multiple layout views open at a given time, but there can only be one active layout view. The active layout view will set the context for the ribbon and many of the dock panes in the application. The Active property will return null if there is no active layout view.
The layout view has several "ZoomTo" nagivation methods and it also provides the context for managing selected items in the Contents pane. For example, the GetSelectedElements method returns a collection of selected page layout elements.
//Open a layout project item in a new view. //A layout project item may exist but it may not be open in a view. //Reference a layout project item by name LayoutProjectItem someLytItem = Project.Current.GetItems<LayoutProjectItem>().FirstOrDefault(item => item.Name.Equals("MyLayout")); //Get the layout associated with the layout project item Layout layout = await QueuedTask.Run(() => someLytItem.GetLayout()); //Worker thread //Create the new pane ILayoutPane iNewLayoutPane = await ProApp.Panes.CreateLayoutPaneAsync(layout); //GUI thread
//Activate an already open layout view. //A layout view may be open but it may not be active. //Find the pane that references the layout and activate it. //Note - there can be multiple panes referencing the same layout. foreach (var pane in ProApp.Panes) { var layoutPane = pane as ILayoutPane; if (layoutPane == null) //if not a layout view, continue to the next pane continue; if (layoutPane.LayoutView.Layout == layout) //if there is a match, activate the view { (layoutPane as Pane).Activate(); return; } }
//Reference the active layout view. //Confirm if the current, active view is a layout view. If it is, do something. LayoutView activeLayoutView = LayoutView.Active; if (activeLayoutView != null) { // do something }
//This example references the active layout view. Next it finds a couple of elements and adds them to a collection. //The elements in the collection are selected within the layout view. Finally, the layout view is zoomed to the //extent of the selection. // Make sure the active pane is a layout view and then reference it if (LayoutView.Active != null) { LayoutView lytView = LayoutView.Active; //Reference the layout associated with the layout view Layout lyt = await QueuedTask.Run(() => lytView.Layout); //Find a couple of layout elements and add them to a collection Element map1 = lyt.FindElement("Map1 Map Frame"); Element map2 = lyt.FindElement("Map2 Map Frame"); List<Element> elmList = new List<Element>(); elmList.Add(map1); elmList.Add(map2); //Set the selection on the layout view and zoom to the selected elements await QueuedTask.Run(() => lytView.SelectElements(elmList)); await QueuedTask.Run(() => lytView.ZoomToSelectedElements()); }
System.Object
ArcGIS.Desktop.Layouts.LayoutView
Target Platforms: Windows 10, Windows 8.1