/// <summary> /// Constructor. /// </summary> /// <param name="view">Parent view.</param> /// <param name="buttonsPanel">Buttons parent element.</param> public ViewButtonsMarginUpdater(DockableContent view, FrameworkElement buttonsPanel) { _view = view; _buttonsPanel = buttonsPanel; view.LayoutUpdated += new EventHandler(_ViewLayoutUpdated); _defaultMargin = (Thickness)App.Current.FindResource(VIEW_BUTTONS_STACK_MARGIN_RESOURCE); }
/// <summary> /// Create overlay dockable pane /// </summary> /// <param name="dockManager">Dock manager</param> /// <param name="content">Content to manage</param> public OverlayDockablePane(DockableContent content) : base(content) { _contentReferenced = content; Show(); _state = PaneState.Hidden; }
/// <summary> /// Set content /// </summary> /// <param name="content">New content</param> private void _SetContent(DockableContent content) { Debug.Assert(null != content); Debug.Assert(null == _content); if (null == _content) StoreFloatingWindowDimensions(content); content.DockManager.Add(content); content.ContainerPane = this; _content = content; }
/// <summary> /// Create pane with content /// </summary> /// <param name="content">Content</param> public DockablePane(DockableContent content) { InitializeComponent(); Debug.Assert(null != content); _SetContent(content); }
/// <summary> /// Remove a dockable content from internal contents list. /// </summary> /// <param name="content">Content to remove.</param> public void Remove(DockableContent content) { _contents.Remove(content); }
/////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /// <summary> /// Add dockable content to layout management. /// </summary> /// <param name="content">Content to manage.</param> public void Add(DockableContent content) { if (!_contents.Contains(content)) _contents.Add(content); }
private void CreateOrUnhideDockableContent(ContentTypes contentType, string title, string viewPropertyName, object parent) { if (!this.dockableContents.Keys.Contains(contentType)) { DockableContent dockableContent = new DockableContent(); ContentControl contentControl = new ContentControl(); dockableContent.IsCloseable = true; dockableContent.HideOnClose = false; dockableContent.Title = title; dockableContent.Content = contentControl; if (parent is ResizingPanel) { DockablePane dockablePane = new DockablePane(); dockablePane.Items.Add(dockableContent); ResizingPanel resizingPanel = parent as ResizingPanel; switch (contentType) { case ContentTypes.PropertyInspector: resizingPanel.Children.Add(dockablePane); ResizingPanel.SetResizeWidth(dockablePane, new GridLength(300)); break; case ContentTypes.Outline: resizingPanel.Children.Insert(1, dockablePane); ResizingPanel.SetResizeWidth(dockablePane, new GridLength(250)); break; case ContentTypes.Toolbox: resizingPanel.Children.Insert(0, dockablePane); ResizingPanel.SetResizeWidth(dockablePane, new GridLength(250)); break; } } else if (parent is DockablePane) { DockablePane dockablePane = parent as DockablePane; dockablePane.Items.Add(dockableContent); if (dockablePane.Parent == null) { this.verticalResizingPanel.Children.Add(dockablePane); } } Binding dataContextBinding = new Binding(viewPropertyName); dockableContent.SetBinding(DockableContent.DataContextProperty, dataContextBinding); Binding contentBinding = new Binding("."); contentControl.SetBinding(ContentControl.ContentProperty, contentBinding); this.dockableContents[contentType] = dockableContent; dockableContent.Closed += delegate(object sender, EventArgs args) { contentControl.Content = null; this.dockableContents[contentType].DataContext = null; this.dockableContents.Remove(contentType); }; } else { if (this.dockableContents[contentType].State == DockableContentState.Hidden) { this.dockableContents[contentType].Show(); } } }