C# WPF编程-Menu

C# WPF编程-Menu

在WPF(Windows Presentation Foundation)中,Menu控件用于创建下拉菜单或上下文菜单,它提供了丰富的定制选项来满足不同的应用需求。下面将介绍如何在WPF应用程序中使用Menu控件,包括基本用法、添加菜单项、设置快捷键以及样式定制。

  • Menu:定义菜单
  • MenuItem: 定义菜单项

布局:

xml 复制代码
<Window x:Class="WpfBaseDemo.WindowMenuDemo"
        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:WpfBaseDemo"
        mc:Ignorable="d"
        Title="WindowMenuDemo" Height="450" Width="800">

   
    <Grid>
        <!-- 背景图 -->
        <Grid.Background>
            <LinearGradientBrush>
                <LinearGradientBrush.GradientStops>
                    <GradientStop Offset="0.00" Color="Red"/>
                    <GradientStop Offset="0.50" Color="LightYellow"/>
                    <GradientStop Offset="1.00" Color="Blue"/>
                </LinearGradientBrush.GradientStops>
            </LinearGradientBrush>
        </Grid.Background>

        
        <StackPanel>
            <Menu>
                <!-- 文件菜单 -->
                <MenuItem Header="_File">
                    <MenuItem Header="_New" Click="MenuItemFileNew_Click">
                        <MenuItem.Icon>
                            <Image Source="Images/filenew.png"/>
                        </MenuItem.Icon>
                    </MenuItem>
                    <MenuItem Header="_Open" Click="MenuItemFileOpen_Click">
                        <MenuItem.Icon>
                            <Image Source="Images/fileopen.png"/>
                        </MenuItem.Icon>
                    </MenuItem>
                    <MenuItem Header="_Save" Click="MenuItemFileSave_Click">
                        <MenuItem.Icon>
                            <Image Source="Images/filesave.png"/>
                        </MenuItem.Icon>
                    </MenuItem>
                </MenuItem>
                
                <!-- 编辑菜单 -->

                <MenuItem Header="_Edit">
                    <MenuItem Header="_Redo">
                        <MenuItem.Icon>
                            <Image Source="Images/edit-redo.png"/>
                        </MenuItem.Icon>
                    </MenuItem>
                    <MenuItem Header="_Undo">
                        <MenuItem.Icon>
                            <Image Source="Images/edit-undo.png"/>
                        </MenuItem.Icon>
                    </MenuItem>
                    
                    <!-- 分割线 -->
                    <Separator Background="Red"/>

                    <MenuItem Header="_Copy">
                        <MenuItem.Icon>
                            <Image Source="Images/editcopy.png"/>
                        </MenuItem.Icon>
                    </MenuItem>
                    <MenuItem Header="_Paste">
                        <MenuItem.Icon>
                            <Image Source="Images/editpaste.png"/>
                        </MenuItem.Icon>
                    </MenuItem>
                    <MenuItem Header="_Cut">
                        <MenuItem.Icon>
                            <Image Source="Images/editcut.png"/>
                        </MenuItem.Icon>
                    </MenuItem>

                    <MenuItem Header="_Delete">
                        <MenuItem.Icon>
                            <Image Source="Images/editdelete.png"/>
                        </MenuItem.Icon>
                    </MenuItem>

                    <!-- 分割线 -->
                    <Separator Height="1" Background="DarkCyan"/>

                    <MenuItem Header="_Find">
                        <MenuItem.Icon>
                            <Image Source="Images/find.png"/>
                        </MenuItem.Icon>
                        <!-- 子菜单项 -->
                        <MenuItem Header="_Kfind">
                            <MenuItem.Icon>
                                <Image Source="Images/kfind.png"/>
                            </MenuItem.Icon>
                        </MenuItem>
                        <MenuItem Header="_Rfind">
                            <MenuItem.Icon>
                                <Image Source="Images/edit-find-replace.png"/>
                            </MenuItem.Icon>
                        </MenuItem>
                    </MenuItem>
                </MenuItem>
                
                <!-- 无图标 菜单 -->
                <MenuItem Header="_Folder">
                    <MenuItem Header="_New Folder"/>
                    <MenuItem Header="_Open Folder"/>
                    <MenuItem Header="_Close Folder"/>
                </MenuItem>
            </Menu>
                        
            <StackPanel Orientation="Vertical">
                <StackPanel >
                    <Image Width="300" Height="200" Source="Images/Linux-logo.png" />
                </StackPanel>
                <StackPanel >
                    <Image Width="300" Height="200" Source="Images/Linux-logo.png" Stretch="Fill" />
                </StackPanel>
            </StackPanel>
        </StackPanel>
    </Grid>
</Window>

代码:

csharp 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace WpfBaseDemo
{
    /// <summary>
    /// WindowMenuDemo.xaml 的交互逻辑
    /// </summary>
    public partial class WindowMenuDemo : Window
    {
        public WindowMenuDemo()
        {
            InitializeComponent();
        }

        private void MenuItemFileNew_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("File New.");
        }

        private void MenuItemFileOpen_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("File Open.");
        }

        private void MenuItemFileSave_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("File Save.");
        }
    }
}

效果



相关推荐
coder!mq12 分钟前
说几个常见的语法糖?
java·开发语言·算法
gugucoding14 分钟前
38. 【Java】Stream API(下):高级操作与性能
java·开发语言
Lhan.zzZ22 分钟前
在 Visual Studio 2022 中打造可扩展的动态链接库模块:从零搭建到原理解析
开发语言·c++·visual studio
心平气和量大福大42 分钟前
android-实例-蒲公英-更新与安装-5-签名与生成APK
android·java·开发语言
码哥DFS1 小时前
构造函数、实例对象、对象原型 ----三者关系
开发语言·javascript·原型模式
quantdash_cc1 小时前
告别自建 Requests/BS4 网页爬虫:基于 QuantDash 搭建零维保的高性能量化行情流水线
开发语言·爬虫·python·pandas·量化·quantdash
ydd1001002 小时前
寻找两个正序数组的中位数 Java 题解,二分分割详解
java·开发语言
半亩码田2 小时前
C#转Python第3.1篇:Python 的 class 没有访问修饰符?面向对象的另一条路
开发语言·python·c#
Wzx1980123 小时前
python沙箱和docker沙箱你选对了吗?
开发语言·python·docker
牧羊人.3333 小时前
Python 办公自动化从入门到入土|09 数据容器之字典
开发语言·python