Вы правы, кажется проблематичным определить ваш collapsedDocumentPane
в XAML, так как AvalonDoc
зарезервирует для него место (заголовок вкладки или что-то еще), полностью игнорируя Visibility="Collapsed"
, поэтому я добавил / удалил мойв коде.Итак:
Во-первых, удалите ваш "collapsedDocumentPane"
из XAML (я комментирую его, так что он может быть использован в качестве ссылки из кода ниже):
<ad:DockingManager x:Name="dockManager" Grid.Row="1">
<ad:ResizingPanel Name="resizePanel" Orientation="Horizontal">
<ad:DocumentPane Name="visibleDocumentPane" HorizontalAlignment="Stretch" >
<ad:DocumentContent Title="A"/>
<ad:DocumentContent Title="B"/>
</ad:DocumentPane>
<!--<ad:DocumentPane Name="collapsedDocumentPane" Visibility="Collapsed">
<ad:DocumentContent Title="A"/>
<ad:DocumentContent Title="B"/>
</ad:DocumentPane>-->
</ad:ResizingPanel>
</ad:DockingManager>
И пересозданэтот xaml в коде (в вашем xaml.cs
файле):
private DockablePane _collapsedDocumentPane;
private DockablePane CollapsedDocumentPane
{
get
{
if (_collapsedDocumentPane== null)
{
_collapsedDocumentPane= new DockablePane();
var a = new DockableContent
{
Title = "A",
DataContext = _youViewModel, //if you pass data context
DockableStyle = DockableStyle.AutoHide,
Content = new RadGridView(), //just a sample control
};
var b = new DockableContent { Title = "B"};
_collapsedDocumentPane.Items.Add(a);
_collapsedDocumentPane.Items.Add(b);
}
return _errorsDockablePane;
}
}
Затем метод, который добавляет или удаляет его:
private void EvaluateCollapsedDocPaneVisibility()
{
//don't know your scenario
if (NeedToDisplay_CollapsedDocPane)
{
if (!resizePanel.Children.Contains(CollapsedDocumentPane))
resizePanel.Children.Add(CollapsedDocumentPane);
}
else
{
if (resizePanel.Children.Contains(CollapsedDocumentPane))
resizePanel.Children.Remove(CollapsedDocumentPane);
}
}
Обратите внимание, свойство загружено с отложенной загрузкой - построенотолько когда нужно.Так что теперь все, что вам нужно сделать, это вызвать метод выше, когда вам нужно добавить или удалить.Это всего лишь пример, вы можете добавить аргумент к методу, чтобы сказать ему, что делать, или что-то еще, надеясь, что это поможет / поможет вам.