• WPF 控件专题 Menu 控件详解


    1、Menu 介绍

        Menu 表示一个 Windows 菜单控件,该控件可用于按层次组织与命令和事件处理程序关联的元素。

        该 Menu 控件提供一个项列表,用于指定应用程序的命令或选项。 通常,单击菜单上的项会打开子菜单或导致应用程序执行命令。

        Menu 是一个 ItemsControl,这意味着它可以包含任何类型 (的对象集合,例如字符串、图像或面板) 。

        每个 Menu 可以包含多个 MenuItem 控件。每个 MenuItem 都可调用命令或调用 Click 事件处理程序。MenuItem 也可以有多个 MenuItem 元素作为子项,从而构成子菜单。

    **************************************************************************************************************

    2、常用属性介绍

        FontFamily:字体系列;    FontSize:字体大小;    FontStretch:字体在屏幕上紧缩或加宽的程度;FontWeight:字体粗细;
        
        Background:背景;    BorderBrush:边框颜色;    BorderThickness:边框宽度;    Foreground:前景色;
        
        Width/Height:宽度/高度;    Name:元素标识名称;    IsEnabled:使能,是否可用;    Margin:外边距;
        
        Opacity:透明度;    Visibility:可见性;    IsVisible:是否可见;    FlowDirection:其子元素的流动方向;
        
        LayoutTransform:在执行布局时应该应用于此元素的图形转换方式。    RenderTransform:元素的呈现位置的转换信息;
        
        RenderTransformOrigin:由RenderTransform声明的任何可能呈现转换的中心点,相对于元素的边界。
        
        HorizontalAlignment/VerticalAlignment:在父元素中组合此元素时所应用的水平对齐特征/垂直对齐特征。
        
        HorizontalContentAlignment/VerticalContentAlignment:控件内容的水平对齐方式/垂直对齐方式。

        Items:获取用于生成 ItemsControl 的内容的集合。ItemTemplate:获取或设置用来显示每个项的 DataTemplate。
        
        ItemsPanel:获取或设置模板,该模板定义对项的布局进行控制的面板。
        
        ItemsSource:获取或设置用于生成 ItemsControl 的内容的集合。

        IsMainMenu:获取或设置一个值,该值指示此 Menu 是否接收主菜单激活通知。

        SnapsToDevicePixels:获取或设置一个值,该值确定在呈现过程中,此元素的呈现是否应使用特定于设备的像素设置。    
        
        ContextMenu:获取或设置通过用户界面请求上下文菜单时应显示的上下文菜单元素, (UI 从此元素中) 。

    **************************************************************************************************************

    3、具体示例代码

    1. <Window.Resources>
    2. <RoutedUICommand x:Key="cmdModify" />
    3. Window.Resources>
    4. <Window.CommandBindings>
    5. <CommandBinding Command="{StaticResource cmdModify}" Executed="ModifyLog_Click"/>
    6. Window.CommandBindings>
    7. <Grid>
    8. <Menu Height="30" VerticalAlignment="Top" IsMainMenu="False" VerticalContentAlignment="Center" Margin="10">
    9. <MenuItem Header="查询中心" VerticalContentAlignment="Center" Height="30" Width="80" >
    10. <MenuItem Header="查询">
    11. <MenuItem.Icon>
    12. <Image Source="/huahua.png" />
    13. MenuItem.Icon>
    14. <MenuItem Header="按姓名查询" Click="QueryName_Click"/>
    15. <MenuItem Header="按性别查询"/>
    16. <MenuItem Header="按按城市查询"/>
    17. MenuItem>
    18. <MenuItem Header="修改记录查询" Command="{StaticResource cmdModify}" CommandParameter="modfiy"/>
    19. <MenuItem Header="说明文档查询"/>
    20. <MenuItem Header="软件版本查询" Click="QueryVer_Click"/>
    21. MenuItem>
    22. <Rectangle Width="1" Height="20" Margin="2" Fill="#4e6ef2" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
    23. <MenuItem Header="查询中心2" VerticalContentAlignment="Center" Height="30" Width="80">
    24. <MenuItem Header="查询">
    25. <MenuItem.Icon>
    26. <Image Source="/huahua.png" />
    27. MenuItem.Icon>
    28. <MenuItem Header="按姓名查询"/>
    29. <MenuItem Header="按性别查询"/>
    30. <MenuItem Header="按按城市查询"/>
    31. MenuItem>
    32. <MenuItem Header="修改记录查询"/>
    33. <MenuItem Header="说明文档查询"/>
    34. <MenuItem Header="软件版本查询"/>
    35. MenuItem>
    36. Menu>
    37. Grid>

    后台代码

    1. public partial class MainWindow : Window
    2. {
    3. public MainWindow()
    4. {
    5. InitializeComponent();
    6. }
    7. private void QueryName_Click(object sender, RoutedEventArgs e)
    8. {
    9. MessageBox.Show("按姓名查询!!!");
    10. }
    11. private void QueryVer_Click(object sender, RoutedEventArgs e)
    12. {
    13. MessageBox.Show("按版本号查询!!!");
    14. }
    15. private void ModifyLog_Click(object sender, ExecutedRoutedEventArgs e)
    16. {
    17. MessageBox.Show("按修改记录查询!!!");
    18. }
    19. }

    **************************************************************************************************************

    4、效果图

    **************************************************************************************************************

    5、总结和扩展

        IsMainMenu 是否接收主菜单激活通知 true 按alt或f10 激活,如果为false ,不能激活。

        快捷键事件响应示例:

    1. <Window.InputBindings>
    2. <KeyBinding Command="{StaticResource cmdModify}" Gesture="Ctrl+R" />
    3. Window.InputBindings>

    **************************************************************************************************************

  • 相关阅读:
    谈谈绘图闪烁的原因
    web容器之NGINX
    phoenix安装
    数据丢失抢救工具:11个最好的免费数据恢复软件
    QT中QThread的各个方法,UI线程关系,事件关系详解(5)
    常用LaTeX命令
    Redis不再开源,Linux基金会推出下一代开源替代方案!
    windows本地认证
    数据结构与算法设计分析——动态规划
    LeetCode75——Day10
  • 原文地址:https://blog.csdn.net/BYH371256/article/details/125559222