在 WPF 中使用网格拆分器
Using a Grid Splitter in 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>
在实际程序中看起来像下面这样。
在我的程序中,当我将鼠标放在网格分割器上时,我的光标变为水平双端指针,但是左右拖动它并没有什么不同。一切都停留在当前位置。
您需要在布局中定义实际的列,而不是使用边距。例如:
<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>
我正在尝试在 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>
在实际程序中看起来像下面这样。
在我的程序中,当我将鼠标放在网格分割器上时,我的光标变为水平双端指针,但是左右拖动它并没有什么不同。一切都停留在当前位置。
您需要在布局中定义实际的列,而不是使用边距。例如:
<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>