2015-01-20 40 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