2013年5月24日金曜日

wpf : GridSplitterでハマる

ちょっとしたことですが、GridSplitterが上手く動かずにハマったのでメモを残しておきます。

下のコードはGridSplitterを使うときの基本的なコードです。 これのHorizontalAlignmentの設定を忘れるとレイアウトが崩れます。

<Window x:Class="GridSplitterTest.TestWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="TestWindow" Height="300" Width="300">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Label Grid.Column="0" Background="LightBlue">L</Label>
        <GridSplitter
                Grid.Column="1"
                Width="10"
                VerticalAlignment="Stretch"
                HorizontalAlignment="Center"
                Background="DarkGray"
        />
        <Label Grid.Column="2" Background="LightGreen">R</Label>
    </Grid>
</Window>

HorizontalAlignmentの設定が無い状態でビルド → 実行した場合、GridSplitterが左に動きません。 右にドラッグすると左のLabelとGridSplitterの間に変な余白ができます。 下の画像の背景色が白くなっているところがそれです。