C# 在使用网格向窗口添加菜单时,我是给菜单指定自己的行还是使用某种面板?

C# 在使用网格向窗口添加菜单时,我是给菜单指定自己的行还是使用某种面板?,c#,wpf,xaml,C#,Wpf,Xaml,我试图了解如何将菜单添加到我的WPF XAML窗口中。我的窗口当前使用网格进行内容布局。我想在窗口顶部添加一个菜单,类似于通常在WinForm应用程序中看到的情况 我已经看了很多例子,但是没有一个例子能够解释网格的使用。我看到的大多数示例都使用了StackPanel,或DockPanel 这是我当前的窗口,带有网格。我应该只给这个菜单它自己的行,还是需要某种面板 <Window> <Grid> <Grid.RowDefinitions>

我试图了解如何将
菜单添加到我的WPF XAML窗口中。我的窗口当前使用
网格
进行内容布局。我想在窗口顶部添加一个
菜单
,类似于通常在WinForm应用程序中看到的情况

我已经看了很多例子,但是没有一个例子能够解释
网格的使用。我看到的大多数示例都使用了
StackPanel
,或
DockPanel

这是我当前的
窗口
,带有
网格
。我应该只给这个
菜单
它自己的行,还是需要某种面板

<Window>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="1*" />
            <RowDefinition Height="3*" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="1*" />
            <ColumnDefinition Width="3*" />
        </Grid.ColumnDefinitions>
        <Menu>
            <MenuItem Header="File" />
        </Menu>
        <GroupBox Header="Seasons" Grid.Row="0" Grid.Column="0" Grid.RowSpan="2">
            <DataGrid Name="lstSeasons" AutoGenerateColumns="False" IsReadOnly="True" HeadersVisibility="Column" ItemsSource="{Binding SeasonsCollectionView}">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Name" Width="*" Binding="{Binding Name}" />
                    <DataGridTextColumn Header="Division" Width="*" Binding="{Binding Division}" />
                </DataGrid.Columns>
            </DataGrid>
        </GroupBox>
    </Grid>
</Window>

您可以将
菜单
添加到主WPF布局
网格
,如下例所示:

<Menu Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="0">
    <MenuItem Header="_File"/>
    <MenuItem Header="_Edit"/>
    <MenuItem Header="_Help"/>
</Menu>

您不需要任何其他容器控件来完成此任务。此处显示了使用此
菜单
技术的实际WPF应用程序的屏幕截图(请注意应用程序窗口顶部的
菜单
栏):


希望这能有所帮助。

我看到一个非常常见的实现,它似乎工作得很好:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Menu Grid.Row="0">
        <MenuItem Header="Load" IsEnabled="False"/>
        <MenuItem Header="Save" IsEnabled="True"/>
        <MenuItem Header="_Import/Export" IsEnabled="False">
            <MenuItem Header="_Import"/>
            <MenuItem Header="_Export"/>
        </MenuItem>
    </Menu>
    <TreeView Grid.Row="1" x:Name="tests" Width="auto">
    </TreeView>
</Grid>

如果有多列,则应在菜单上设置Grid.ColumnSpan属性