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属性