Wpf 为什么我的GridSplitter根本不工作?
我正在将WinForms应用程序迁移到WPF。到目前为止,一切都进展顺利,除了我尝试使用GridSplitter之外,在运行时,我永远无法使用它来调整大小 为了确保这不仅仅是我的代码,我试图从LearnWPF.com编译代码,但它似乎也不起作用。当我将鼠标移到拆分器上时,我希望看到标准的调整光标,但这并没有发生,而且据我所知,在窗口中也没有拆分器的其他视觉表示 我错过了什么Wpf 为什么我的GridSplitter根本不工作?,wpf,xaml,gridsplitter,Wpf,Xaml,Gridsplitter,我正在将WinForms应用程序迁移到WPF。到目前为止,一切都进展顺利,除了我尝试使用GridSplitter之外,在运行时,我永远无法使用它来调整大小 为了确保这不仅仅是我的代码,我试图从LearnWPF.com编译代码,但它似乎也不起作用。当我将鼠标移到拆分器上时,我希望看到标准的调整光标,但这并没有发生,而且据我所知,在窗口中也没有拆分器的其他视觉表示 我错过了什么 <Window x:Class="UI.Test" xmlns="http://schemas.micros
<Window x:Class="UI.Test"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Test" Height="300" Width="300">
<Grid>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<StackPanel Background="#feca00" Grid.Column="0">
<TextBlock FontSize="35" Foreground="#58290A"
TextWrapping="Wrap">Left Hand Side</TextBlock>
</StackPanel>
<GridSplitter/>
<Border CornerRadius="10" BorderBrush="#58290A"
BorderThickness="5" Grid.Column="1">
<TextBlock FontSize="25" Margin="20" Foreground="#FECA00"
TextWrapping="Wrap">Right Hand Side</TextBlock>
</Border>
</Grid>
左手边
右侧
在您的示例中,
GridSplitter
被放置在第一列中。我不记得我头顶上的WPF对齐规则,但我认为它可能被放在第一列的左侧。不是你想要的
使GridSplitter
占据一行或一列要比尝试与其他控件共享一行或一列容易得多
<Window x:Class="UI.Test"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Test" Height="300" Width="300">
<Grid>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Background="#feca00">
<TextBlock FontSize="35" Foreground="#58290A" TextWrapping="Wrap">
Left Hand Side
</TextBlock>
</StackPanel>
<GridSplitter
Width="4"
Grid.Column="1"
Background="Red"
VerticalAlignment="Stretch"
HorizontalAlignment="Center"/>
<Border
Grid.Column="2"
BorderBrush="#58290A"
BorderThickness="5"
CornerRadius="10">
<TextBlock FontSize="25" Foreground="#FECA00" TextWrapping="Wrap">
Right Hand Side
</TextBlock>
</Border>
</Grid>
</Grid>
</Window>
左手边
右侧
您缺少Z-排序的重要概念。控件按您列出的顺序以z顺序放置。基本上,网格拆分器被最后一列所覆盖。如果将轴网拆分器按z顺序放置在最后一列上,它应该可以正常工作,而不需要额外的列:
<Window x:Class="UI.Test"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Test" Height="300" Width="300">
<Grid>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<StackPanel Background="#feca00" Grid.Column="0">
<TextBlock FontSize="35" Foreground="#58290A" TextWrapping="Wrap">Left Hand Side</TextBlock>
</StackPanel>
<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="1"/>
</Grid>
</Grid>
左手边
右侧
请发布GridSplitter的XAML。我不知道GridSplitter上的VerticalAlignment=“Stretch”和HorizontalAlignment=“Center”是如此不可避免