2015-01-20 37 views
0

我想在C#WPF中实现GridSplitter,但我没有找到任何像样的教程,我试过为自己工作,但迄今没有喜悦。在WPF中使用网格分割器

我有以下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

在我的程序,当我把我的鼠标在网格上分器,我的光标变为水平双端指针,但拖动它要么左边和右边完全不会有什么不同。一切都停留在当前放置的位置。

感谢您提供的任何帮助。

回答

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> 
+0

更好的设置所有的宽度在'ColumnDefinition's宽度并留下或者与明星GridLength第一个或最后一列,并设置包含的所有网格H.和V.对准伸展。绑定更容易。您可以删除GridSplitter宽度并将“Horizo​​ntalAlignment”设置为“Stretch”。无论如何。 – 2015-01-20 23:03:16

+0

感谢您的帮助,设法弄清楚了 – Boardy 2015-01-20 23:33:06