У меня есть две области на моем интерфейсе (с использованием WPF), которые я хочу разделить. И кнопка для изменения между горизонтальным и вертикальным расколом. Я использую AvalonDock. Когда я изменяю параметр Orientation в коде перед запуском, все это работает.Динамическое изменение горизонтального/вертикального смены с AvalonDock
<ad:DockingManager Grid.Row="1">
<ad:LayoutRoot>
<ad:LayoutPanel x:Name="LayoutPanel1" Orientation="Vertical" IsMaximized="True">
<ad:LayoutDocumentPane x:Name="DocPane1" ShowHeader="True">
<ad:LayoutDocument Title="Spectrogram" CanClose="False" CanFloat="False">
<wpf:CartesianChart Series="{Binding MySeries}" Zoom="X"/>
</ad:LayoutDocument>
</ad:LayoutDocumentPane>
<ad:LayoutDocumentPane x:Name="DocPane2" ShowHeader="True">
<ad:LayoutDocument Title="Table" CanClose="False" CanFloat="False">
<TextBox Name="textbox1" />
</ad:LayoutDocument>
</ad:LayoutDocumentPane>
</ad:LayoutPanel>
</ad:LayoutRoot>
</ad:DockingManager>
Но он не меняется при нажатии кнопки. Ничего не происходит, но когда я пытаюсь перетащить сплиттер, который остался на месте, программа вылетает.
private void OnChangeView(object sender, RoutedEventArgs e)
{
if (LayoutPanel1.Orientation == Orientation.Vertical) {
LayoutPanel1.Orientation = Orientation.Horizontal;
} else {
LayoutPanel1.Orientation = Orientation.Vertical;
}
}
Я отлаживал его, сама собственность менялась. Не знаю, в чем проблема ... Или, может быть, вы знаете лучший способ реализовать это, но мне тоже может понадобиться AvalonDock позже.