下拉菜单

书名:WPF专业编程指南
作者:李应保
出版社:电子工业出版社
出版时间:2010-01
ISBN:9787121100116


一、菜单

  • 菜单是一个常用的控件,常位于应用程序窗口的顶部。
    每个菜单里面含有菜单条目(MenuItem),MenuItem是一个带有标题的条目控件,它从HeaderedItemControl类中派生出来。
    HeaderedItemControl类中有一个类型为Object的属性:Header,在菜单条目中通常把它设为字符串。有时候菜单条目下会有子菜单,子菜单的条目下还会有下一层的子菜单,等等。
    虽然技术上实现多级子菜单没有什么难度,但笔者不太喜欢多级子菜单,原因在于用户使用起来不方便,通常菜单再加一级子菜单就可以了。
    特别是引导界面潮流的Microsoft Office软件推出2007版之后,Ribbon控件取代了菜单,多级菜单就不值得提倡了。

  • 菜单条目支持类似于CheckBox的选中标记,是布尔类型。
    IsCheckable属性表明该条目是否支持选中标记,若设为True,则表明可以设置选择标记。
    IsChecked表明该条目选择的状态,它也是布尔类型。
    当该值为True时,在该条目上显示一个选中标记。

  • 菜单有两种用法,一种是下拉式菜单,另一种是弹出菜单。

二、下拉菜单的例子

  <Window x:Class="Yingbao.Chapter6.UseMenu"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Yingbao.Chapter6" Height="300" Width="500">
  <DockPanel >
    <Menu DockPanel.Dock ="Top" >
      <MenuItem Header ="文件" >
        <MenuItem Header="打开" InputGestureText ="Ctrl+O">
          <MenuItem.Icon >
                <Image Source ="Image\open.png" />
          </MenuItem.Icon>
        </MenuItem>
        <MenuItem Header="保存" InputGestureText ="Ctrl+S">
          <MenuItem.Icon >
            <Image Source ="Image\save.png" />
          </MenuItem.Icon>
        </MenuItem>
        <MenuItem Header="另存为...">
          <MenuItem.Icon >
            <Image Source ="Image\save_as.png" />
          </MenuItem.Icon>
      </MenuItem>
        <Separator />
        <MenuItem Header ="打印预览"/>
        <MenuItem Header ="打印" InputGestureText ="Ctrl+S"/>
        <MenuItem Header ="退出"/>
      </MenuItem>
      <Separator />
      <MenuItem Header ="编辑">
          <MenuItem Header ="恢复"/>
          <MenuItem Header ="重做"/>
          <Separator />
        <MenuItem Header ="拷贝" InputGestureText ="Ctrl+C" Command
            ="ApplicationCommands.Copy">
          <MenuItem.Icon >
            <Image Source ="Image\copy.png" />
          </MenuItem.Icon>
        </MenuItem>
        <MenuItem Header ="裁剪" InputGestureText ="Ctrl+X" Command
              ="ApplicationCommands.Cut">
          <MenuItem.Icon >
            <Image Source ="Image\cut.png" />
          </MenuItem.Icon>
        </MenuItem>
        <MenuItem Header ="粘贴" InputGestureText ="Ctrl+P" Command
              ="ApplicationCommands.Paste">
          <MenuItem.Icon >
            <Image Source ="Image\paste.png" />
          </MenuItem.Icon>
        </MenuItem>
        <MenuItem Header="字体">
          <MenuItem Header="黑体" IsCheckable="True"
                  Checked="Bold_Checked"
                  Unchecked="Bold_Unchecked"/>
          <MenuItem Header="斜体" IsCheckable="True"
                  Checked="Italic_Checked"
                  Unchecked="Italic_Unchecked"/>
          <Separator/>
          <MenuItem Header="增大字体"
                  Click="IncreaseFont_Click"/>
          <MenuItem Header="缩小字体"
                  Click="DecreaseFont_Click"/>
        </MenuItem>
      </MenuItem>
    </Menu>
    <TextBox Name ="textBox1" Width ="450" Height ="150"/>
  </DockPanel>
  </Window>

C#程序

  using System;
  using System.Collections.Generic;
  using System.Text;
  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 Yingbao.Chapter6
  {
    public partial class UseMenu : System.Windows.Window
    {
        public UseMenu()
        {
            InitializeComponent();
        }
  private void Bold_Checked(object sender, RoutedEventArgs e)
        {
            textBox1.FontWeight = FontWeights.Bold;}
  private void Bold_Unchecked(object sender, RoutedEventArgs e)
        {
            textBox1.FontWeight = FontWeights.Normal;
        }
  private void Italic_Checked(object sender, RoutedEventArgs e)
        {
            textBox1.FontStyle = FontStyles.Italic;
        }
  private void Italic_Unchecked(object sender, RoutedEventArgs e)
        {
            textBox1.FontStyle = FontStyles.Normal;
        }
  private void IncreaseFont_Click(object sender, RoutedEventArgs e)
        {
            if (textBox1.FontSize < 60)
            {
              textBox1.FontSize += 4;
            }
        }
  private void DecreaseFont_Click(object sender, RoutedEventArgs e)
        {
            if (textBox1.FontSize > 10)
            {
              textBox1.FontSize -= 4;
            }
        }
    }
  }

运行WPF中下拉菜单的例子,如图6-15所示。


图6-15 WPF中的下拉菜单
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容