WPF-具有三列的GridSplitter
我有一个应用程序与网格与3列。第一列和第二列之间的栅格拆分器工作正常。为了使拆分器位于第二列和第三列之间,我为拆分器制作了一列。(因此,第三列实际上是第四列。) 调整大小时,其他列也会收缩。我想这是因为我把它们设置为相对大小。但我不知道如何修复它 下面是我的问题的一个XAML Pad就绪示例。将其插入XAML pad,然后尝试将最后一列的大小调整为更小WPF-具有三列的GridSplitter,wpf,layout,gridsplitter,Wpf,Layout,Gridsplitter,我有一个应用程序与网格与3列。第一列和第二列之间的栅格拆分器工作正常。为了使拆分器位于第二列和第三列之间,我为拆分器制作了一列。(因此,第三列实际上是第四列。) 调整大小时,其他列也会收缩。我想这是因为我把它们设置为相对大小。但我不知道如何修复它 下面是我的问题的一个XAML Pad就绪示例。将其插入XAML pad,然后尝试将最后一列的大小调整为更小 <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentat
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<StackPanel Background="#feca00" Grid.Column="0">
<TextBlock FontSize="35" Foreground="#58290A"
TextWrapping="Wrap">Left Hand Side</TextBlock>
</StackPanel>
<GridSplitter Width="10" />
<Border CornerRadius="10" BorderBrush="#58290A"
BorderThickness="5" Grid.Column="1">
<TextBlock FontSize="25" Margin="20" Foreground="#FECA00"
TextWrapping="Wrap">Right Hand Side</TextBlock>
</Border>
<GridSplitter Grid.Column="2" HorizontalAlignment="Right" VerticalAlignment="Stretch" Width="5"></GridSplitter>
<TabControl Grid.Column="3" Name="tabControl1">
<TabItem Header="Add Links" Name="tabAddLinks">
<Grid></Grid>
</TabItem>
</TabControl>
</Grid>
</Page>
左手边
右侧
谢谢你的帮助
编辑: 有人建议,在各自的列中使用两个拆分器可能会解决此问题。我试过了,现在第一个拆分器也像第二个拆分器一样收缩列 下面是该示例的XAML Pad代码:
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<StackPanel Background="#feca00" Grid.Column="0">
<TextBlock FontSize="35" Foreground="#58290A"
TextWrapping="Wrap">Left Hand Side</TextBlock>
</StackPanel>
<GridSplitter Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Stretch" Width="5"></GridSplitter>
<Border CornerRadius="10" BorderBrush="#58290A"
BorderThickness="5" Grid.Column="2">
<TextBlock FontSize="25" Margin="20" Foreground="#FECA00"
TextWrapping="Wrap">Right Hand Side</TextBlock>
</Border>
<GridSplitter Grid.Column="3" HorizontalAlignment="Right" VerticalAlignment="Stretch" Width="5"></GridSplitter>
<TabControl Grid.Column="4" Name="tabControl1">
<TabItem Header="Add Links" Name="tabAddLinks">
<Grid></Grid>
</TabItem>
</TabControl>
</Grid>
</Page>
左手边
右侧
网格拆分器应放置在网格中自己的列中。我不确定我是否完全理解您的问题,但我建议您尝试创建一个包含5列定义的网格。使用第1列和第2列放置网格拆分器,使用第0列、第2列和第4列放置内容
有一个关于如何做到这一点的示例
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="Auto" />
<ColumnDefinition/>
</Grid.ColumnDefinitions>
...
<GridSplitter Grid.Column="1"
HorizontalAlignment="Center"
VerticalAlignment="Stretch"
Background="Black"
ShowsPreview="True"
Width="5"
/>
...
尝试为两个拆分器设置HorizontalAlignment=“Center”
——不知道为什么将其设置为“Right”会导致行为变得如此扭曲,但更改它对我来说很有效:)我尝试过,现在两个列都断了。请参阅我更新的问题,了解已更改的XAML。还请注意,此问题仅在3列的情况下出现。两列都很好用……我猜您没有像我发布的示例那样尝试HorizontalAlignment=“Center”。)很高兴您解决了这个问题。更新:我认为这与GridSplitter的ResizeBehavious有关。如果未指定,您的属性将默认为BasedOnAlignment,因此只有GridSplitter列右侧的列将调整大小。。。需要深入挖掘msdn文档以确保。。。