1
私は分割したい私のインターフェイス(WPFを使用)に2つの領域があります。水平と垂直の分割を切り替えるボタン。私は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も必要になるかもしれません。