You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整WPF中GridSplitter高度避免遮挡顶部菜单与工具栏?

解决WPF GridSplitter遮挡Menu和ToolBar的问题

你的问题出在GridSplitter未配置跨行属性,导致它仅占据第0行区域,拖动时会遮挡上方的Menu和ToolBar。只需给GridSplitter添加跨行配置,让它覆盖Menu和ToolBar所在的两行即可:

  1. 给GridSplitter设置Grid.Row="0"和Grid.RowSpan="2",让它跨越两行
  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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 03:08:19