如何调整WPF中GridSplitter高度避免遮挡顶部菜单与工具栏?
你的问题出在GridSplitter未配置跨行属性,导致它仅占据第0行区域,拖动时会遮挡上方的Menu和ToolBar。只需给GridSplitter添加跨行配置,让它覆盖Menu和ToolBar所在的两行即可:
- 给GridSplitter设置
Grid.Row="0"和Grid.RowSpan="2",让它跨越两行 - 设置
VerticalAlignment="Stretch",确保Splitter高度填满两行总高度
修改后的完整代码如下:
<Window x:Class="M4aToMP3.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:M4aToMP3" mc:Ignorable="d" Title="M4aToMP3" Height="600" Width="800" WindowStartupLocation="CenterScreen"> <Grid Name="gridMain" ShowGridLines="True"> <Grid.RowDefinitions> <RowDefinition Height="22"></RowDefinition> <RowDefinition Height="40"></RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="240"></ColumnDefinition> <ColumnDefinition Width="5"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> </Grid.ColumnDefinitions> <!-- 修改后的GridSplitter --> <GridSplitter Name="gridSplitterMain" Grid.Row="0" Grid.RowSpan="2" Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="5"/> <Menu Name="menuMain" Grid.Row="0"> <MenuItem Header="_File"></MenuItem> <MenuItem Header="_Edit"></MenuItem> <MenuItem Header="_View"></MenuItem> <MenuItem Header="_Help"></MenuItem> </Menu> <ToolBarTray Grid.Row="1"> <ToolBar Name="toolBarMain" Height="40"> <Button> <Image Source="icons8-audio-file-32.png"></Image> </Button> <Button> <Image Source="icons8-music-folder-32.png"></Image> </Button> </ToolBar> </ToolBarTray> </Grid> </Window>
修改后,GridSplitter会垂直覆盖Menu和ToolBar所在的两行区域,拖动时仅调整左侧列的宽度,不会再遮挡顶部的Menu和ToolBar。
内容的提问来源于stack exchange,提问作者Neil S
相关产品推荐
相关产品推荐

