Как создать нижнюю панель без автоматического скрытия с помощью AvalonDock 2.0?
Я использую AvalonDock 2.0
Я чувствую, что это должно быть довольно просто, но документация ничего не говорит, и я потратил 2 часа, чтобы попытаться понять это. Итак, извините, если это слишком просто.
Я хочу именно то, что говорит название. В документации упоминается, как сделать нижнюю боковую панель, но только автоматически скрытую, а это не то, что мне нужно.
Я пытался включить его автоматическое скрытие в коде позади, но на высоту это не повлияло, поэтому каждый раз, когда приложение запускается, пользователь должен перетаскивать его вверх, чтобы увидеть содержимое панели.
2 ответа
Немного хакерский, но это сработало для меня:
<xcad:DockingManager x:Name="DockingManager" Grid.Row="1" DocumentsSource="{Binding Documents}" Loaded="DockingManager_OnLoaded">
<xcad:LayoutRoot>
<xcad:LayoutPanel Orientation="Horizontal">
<xcad:LayoutDocumentPane></xcad:LayoutDocumentPane>
<xcad:LayoutAnchorablePane DockWidth="Auto" SelectedContentIndex="0">
<xcad:LayoutAnchorable Title="Right">
<Label>Right</Label>
</xcad:LayoutAnchorable>
</xcad:LayoutAnchorablePane>
</xcad:LayoutPanel>
<xcad:LayoutRoot.BottomSide>
<xcad:LayoutAnchorSide>
<xcad:LayoutAnchorGroup>
<xcad:LayoutAnchorable x:Name="OutputAnchorable" Title="Output">
<Label>Bottom</Label>
</xcad:LayoutAnchorable>
</xcad:LayoutAnchorGroup>
</xcad:LayoutAnchorSide>
</xcad:LayoutRoot.BottomSide>
</xcad:LayoutRoot>
</xcad:DockingManager>
Тогда в коде позади:
private void DockingManager_OnLoaded(object sender, RoutedEventArgs e)
{
OutputAnchorable.ToggleAutoHide();
// You might want to do this to get a reasonable height
var root = (LayoutAnchorablePane)OutputAnchorable.Parent;
root.DockHeight = new GridLength(100);
}
Вам нужно что-то вроде этого
<xcad:LayoutPanel Orientation="Vertical">
<xcad:LayoutPanel Orientation="Horizontal" >
</xcad:LayoutPanel>
</xcad:LayoutPanel>
Второй макет создаст все панели микширования, первый создаст верх или низ по вертикали.