protected override void OnVisualParentChanged(DependencyObject oldParent) { DockingManager dockManager = GetManager(); if (dockManager != null) { dockManager.RefreshContents(); } base.OnVisualParentChanged(oldParent); }
protected override void OnContentChanged(object oldContent, object newContent) { base.OnContentChanged(oldContent, newContent); if (_manager != null) { _manager.RegisterFloatingWindow(this); _manager.RefreshContents(); } UpdateContentTitle(); }
protected override void OnItemsChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { DockingManager dockManager = GetManager(); if (dockManager != null) { dockManager.RefreshContents(); } if (e.NewItems != null) { CheckItems(e.NewItems); } HasSingleItem = (Items.Count == 1); if (_lastSelectedContent != null && !Items.Contains(_lastSelectedContent)) { _lastSelectedContent = null; } if ((e.NewItems == null || e.NewItems.Count == 0) && (e.OldItems != null && e.OldItems.Count > 0)) { if (_lastSelectedContent != null && Items.Contains(_lastSelectedContent)) { SelectedItem = _lastSelectedContent; } } //let base class handle SelectedIndex/Item value base.OnItemsChanged(e); if (Items.Count > 0) { int currentIndex = SelectedIndex; if (currentIndex < 0 || currentIndex >= Items.Count) { currentIndex = Items.Count - 1; } SelectedItem = Items.GetItemAt(currentIndex); } RefreshContainsActiveContentProperty(); if (Items.Count > 0) { var parentPanel = Parent as ResizingPanel; while (parentPanel != null && parentPanel.IsLoaded) { parentPanel.UpdateLayout(); parentPanel.InvalidateMeasure(); parentPanel = parentPanel.Parent as ResizingPanel; } } }