在WPF中使用Grid Splitter

时间:2015-01-20 22:51:48

标签: c# wpf

我正在尝试在C#WPF中实现一个GridSplitter,但我找不到任何体面的教程,我已经尝试过为自己解决,但到目前为止还没有任何乐趣。

我有以下XAML布局:

<Window x:Class="SqliteManager.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="444" Width="802">
    <Grid>
        <Grid Grid.Column="0" HorizontalAlignment="Left" Name="grid1" Width="181" Background="#FFE23D3D" />
        <GridSplitter Grid.Column="1" HorizontalAlignment="Left" Margin="179,0,0,0" Name="gridSplitter1" Width="10" ResizeDirection="Columns" />
        <Grid Grid.Column="2" HorizontalAlignment="Left" Margin="187,0,0,0" Name="grid2" Width="593" Background="#FF2B42C7" />
    </Grid>
</Window>

这在实际程序中如下所示。

Screenshot of program

在我的程序中,当我将鼠标放在网格分割器上时,我的光标变为水平双端指针,但左右拖动绝对没有区别。一切都停留在目前所处的位置。

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:4)

您需要在布局中定义实际列,而不是使用边距。例如:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="10" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>

    <Grid Grid.Column="0" HorizontalAlignment="Left" Name="grid1" Width="181" Background="#FFE23D3D" />
    <GridSplitter Grid.Column="1" HorizontalAlignment="Left"  Name="gridSplitter1" Width="10" ResizeDirection="Columns" />
    <Grid Grid.Column="2" HorizontalAlignment="Left" Name="grid2" Width="593" Background="#FF2B42C7" />
</Grid>