次のように GridSplittler XAML を定義しました。
<Window>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
</Grid>
<Border Grid.Column="0" Background="Red" />
<GridSplitter Grid.Column="1" ResizeDirection="Columns" Width="3" Height="Auto" HorizontalAlighment="Stretch" VerticalAlignment="Stretch" />
<Border Grid.Column="0" Background="Green" />
</Window>
これにより、間にグリッド スプリッターがある 2 つの列が作成され、グリッド スプリッターが左右にドラッグされると、列のサイズが正しく変更されます。ウィンドウ全体のサイズを変更する場合、左の赤い列の幅を固定したままにし、右の緑の列の幅を変更します (ウィンドウのサイズが変更されるため)。Visual Studio アプリケーション全体のサイズを変更し、ソリューション エクスプローラーの幅は固定されたままですが、コード タブの幅が変更された場合と同じ効果があります。また、SQL Server Management Studio と同じです。オブジェクト エクスプローラーの幅は固定のままですが、SQL タブの幅が変わります。これら 2 つの例では、より複雑なドッキング コントロールを使用していることに気付きましたが、WPF GridSplitter を使用して同じ結果を得たいと考えていました。
編集:マシューの提案に基づいて、必要なのは最初の列定義に初期幅を与えることだけでした(以下に200を使用して表示)。
<Grid Name="GridName">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Border Grid.Column="0" Background="Red" />
<GridSplitter Name="SplitterName" Grid.Column="1" ResizeDirection="Columns" Width="3" Height="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
<Border Grid.Column="2" Background="Green" />
</Grid>
ウィンドウのサイズを変更すると、緑の境界線の幅のみが変更され、赤の境界線の幅は固定されたままになります。ありがとう!