private void DetachVisibilityHandler(WindowCommandsItem container) { if (container != null) { container.VisibilityPropertyChangeNotifier = null; } }
private void AttachVisibilityHandler(WindowCommandsItem container, UIElement item) { if (container != null) { if (null == item) { // if item is not a UIElement then maybe the ItemsSource binds to a collection of objects // and an ItemTemplate is set, so let's try to solve this container.ApplyTemplate(); var content = container.ContentTemplate?.LoadContent() as UIElement; if (null == content) { // no UIElement was found, so don't show this container container.Visibility = Visibility.Collapsed; } return; } container.Visibility = item.Visibility; var isVisibilityNotifier = new PropertyChangeNotifier(item, UIElement.VisibilityProperty); isVisibilityNotifier.ValueChanged += VisibilityPropertyChanged; container.VisibilityPropertyChangeNotifier = isVisibilityNotifier; } }