I am attempting to bind the Visibility
of LayoutAnchorableItem
to a boolean in the ViewModel so that I can programmatically show and hide the anchorable:
<UserControl.Resources>
<avalon:BoolToVisibilityConverter x:Key="btvc"/>
</UserControl.Resources>
<avalon:DockingManager>
<avalon:DockingManager.LayoutItemContainerStyleSelector>
<ws:WorkspaceStyleSelector>
<ws:WorkspaceStyleSelector.AnchorableStyle>
<Style TargetType="{x:Type avalon:LayoutAnchorableItem}">
<!-- ... -->
<Setter Property="Visibility" Value="{Binding Model.IsVisible, Converter={StaticResource btvc}, Mode=TwoWay}"/>
</Style>
</ws:WorkspaceStyleSelector.AnchorableStyle>
</ws:WorkspaceStyleSelector>
</avalon:DockingManager.LayoutItemContainerStyleSelector>
<!-- ... -->
</avalon:DockingManager>
However, whenever I hide an anchorable, an exception is thrown:
Object reference is not set to an instance.
at Xceed.Wpf.AvalonDock.Layout.LayoutContent.Close() in ...\Xceed.Wpf.AvalonDock\Layout\LayoutContent.cs:line 346
at Xceed.Wpf.AvalonDock.Controls.LayoutItem.OnVisibilityChanged() in ...\Xceed.Wpf.AvalonDock\Controls\LayoutItem.cs:line 310
at Xceed.Wpf.AvalonDock.Controls.LayoutAnchorableItem.OnVisibilityChanged() in ...\Xceed.Wpf.AvalonDock\Controls\LayoutAnchorableItem.cs:line 299
at Xceed.Wpf.AvalonDock.Controls.LayoutItem.OnVisibilityChanged(DependencyObject s, DependencyPropertyChangedEventArgs e) in ...\Xceed.Wpf.AvalonDock\Controls\LayoutItem.cs:line 303
at Xceed.Wpf.AvalonDock.Controls.LayoutItem.<.cctor>b__1(DependencyObject s, DependencyPropertyChangedEventArgs e) in ...\Xceed.Wpf.AvalonDock\Controls\LayoutItem.cs:line 37
at System.Windows.PropertyChangedCallback.Invoke(DependencyObject d, DependencyPropertyChangedEventArgs e)
at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
...
After commenting out the binding to visibility, the anchorable is hidden as expected.