今天简单介绍三个WPF控件,Menu,ContextMenu和StatusBar,这里只是认识一下,入个门。
①menu
menu控件即菜单栏控件,这个控件的制作效果就如平时使用的各种软件最上方的菜单栏一样,一会儿会通过一个例子展示一下效果。
这个控件的XAML语法如下:
<Menu x:Name="menu">
<MenuItem Header="" Click="">
<MenuItem Header=""/>
<MenuItem Header=""/>
</MenuItem>
<MenuItem Header=""/>
<MenuItem Header=""/>
<MenuItem Header=""/>
</Menu>
在整个menu控件内,由许多的MenuItem组成,其中第一级定义的MenuItem将会显示为最上方我们看到的显示出来的菜单栏选项,第二级定义的MenuItem会通过点击第一级菜单栏选项再显示出来,其显示效果与等会要介绍的ContextMenu控件一样。这里面的Click即为相关项的点击添加事件,最终可以完成通过点击不同的子项实现不同的函数效果。
②ContextMenu
这个控件是用来设置上下文菜单的,什么是上下文菜单,如下图所示,我们选中一个控件,右键点击,显示出如下图所示的部分,即为上下文菜单,这与上述menu菜单栏的二级MenuItem子项显示的样式是一样的,我们在设计UI时,如果想要给某个控件添加这样的上下文菜单,就可使用这个控件,这个控件不能单独声明,因为其是给其他控件添加上下文菜单,所以必须写在某一控件内。
这个控件的XAML语法如下:我们用TextBlock举例
<TextBlock Text="123" FontSize="50" Background="LightGreen">
<TextBlock.ContextMenu>
<ContextMenu HasDropShadow="True">
<MenuItem Header="复制"/>
<MenuItem Header="粘贴"/>
<MenuItem Header="删除"/>
</ContextMenu>
</TextBlock.ContextMenu>
从上述语法可以看出,该控件是设置在了TextBlock的内部,用来显示TextBlock的右击上下文菜单内容,其中的header即为显示内容,HasDropShadow选择为true表示给上下文菜单添加阴影效果,可以在MenuItem中添加点击事件,以实现不同的点击函数效果。
③StatusBar
这个控件也是一个集合控件,一般用在设置页面下方的状态栏,这个控件会把其内部的子项横向顺序排列,是一个水平条,可以在其中设置文本、图标或进度条等等内容,以提供用户有关应用程序当前状态的重要信息。
这个控件的XAML语法如下:
<StatusBar FontSize="20" Background="LightBlue">
<StatusBarItem>
<TextBlock Text="底部栏"/>
</StatusBarItem>
<StatusBarItem>
<Button Content="123"/>
</StatusBarItem>
<StatusBarItem>
<RadioButton GroupName="1" Content="123" VerticalContentAlignment="Center"/>
</StatusBarItem>
<StatusBarItem>
<ComboBox>
<ComboBoxItem Content="123"/>
<ComboBoxItem Content="456"/>
</ComboBox>
</StatusBarItem>
<TextBlock Text="学习每一天"/>
</StatusBar>
从上述语法我们可以看出,该控件内部可以任意设置子项控件,而且我们可以发现其子项不仅可以写在StatusBarItem的内部,也可以直接写在StatusBar 内部,都可以显示出来。
④写在一块,看一下这几个控件是怎么显示的
<Window x:Class="ContextMenu_StatusBar.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:ContextMenu_StatusBar"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Menu FontSize="20" Background="Transparent">
<MenuItem Header="新建">
<MenuItem Header="文本"/>
<MenuItem Header="PDF"/>
</MenuItem>
<MenuItem Header="编辑"/>
<MenuItem Header="工具"/>
<MenuItem Header="帮助"/>
</Menu>
<TextBlock Grid.Row="1" Text="123" FontSize="50" HorizontalAlignment="Center" VerticalAlignment="Center" Background="LightGreen">
<TextBlock.ContextMenu>
<ContextMenu HasDropShadow="True">
<MenuItem Header="复制"/>
<MenuItem Header="粘贴"/>
<MenuItem Header="删除"/>
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
<StatusBar Grid.Row="2" FontSize="20" Background="LightBlue">
<StatusBarItem>
<TextBlock Text="底部栏"/>
</StatusBarItem>
<StatusBarItem>
<Button Content="123"/>
</StatusBarItem>
<StatusBarItem>
<RadioButton GroupName="1" Content="123" VerticalAlignment="Center" VerticalContentAlignment="Center"/>
</StatusBarItem>
<StatusBarItem>
<ComboBox>
<ComboBoxItem Content="123"/>
<ComboBoxItem Content="456"/>
</ComboBox>
</StatusBarItem>
<TextBlock Text="学习每一天"/>
</StatusBar>
</Grid>
</Window>
显示效果:
点击新建:
右键中间的控件:
这里就是显示了一下,没有在后端写相关的点击事件。