
- WPF 教程
- WPF - 首頁
- WPF - 概述
- WPF - 環境設定
- WPF - Hello World
- WPF - XAML 概述
- WPF - 元素樹
- WPF - 依賴屬性
- WPF - 路由事件
- WPF - 控制元件
- WPF - 佈局
- WPF - 佈局巢狀
- WPF - 輸入
- WPF - 命令列
- WPF - 資料繫結
- WPF - 資源
- WPF - 模板
- WPF - 樣式
- WPF - 觸發器
- WPF - 除錯
- WPF - 自定義控制元件
- WPF - 異常處理
- WPF - 本地化
- WPF - 互動
- WPF - 2D 圖形
- WPF - 3D 圖形
- WPF - 多媒體
- WPF 有用資源
- WPF - 快速指南
- WPF - 有用資源
- WPF - 討論
WPF - 選單
選單是一個控制元件,它使您能夠分層組織與命令和事件處理程式關聯的元素。選單是一個 ItemsControl,因此它可以包含任何物件型別的集合,例如字串、影像或面板。Menu 類的層次繼承如下:

以下是 Menu 類中常用的屬性
序號 | 屬性和描述 |
---|---|
1 | Background 獲取或設定一個筆刷,該筆刷描述控制元件的背景。(從 Control 繼承。) |
2 | BindingGroup 獲取或設定用於元素的 BindingGroup。(從 FrameworkElement 繼承。) |
3 | BitmapEffect 已過時。獲取或設定直接應用於此元素渲染內容的點陣圖效果。這是一個依賴項屬性。(從 UIElement 繼承。) |
4 | BorderThickness 獲取或設定控制元件的邊框粗細。(從 Control 繼承。) |
5 | ContextMenu 獲取或設定應在透過使用者介面 (UI) 從此元素內部請求上下文選單時出現的上下文選單元素。(從 FrameworkElement 繼承。) |
6 | Effect 獲取或設定要應用於 UIElement 的點陣圖效果。這是一個依賴項屬性。(從 UIElement 繼承。) |
7 | Height 獲取或設定元素的建議高度。(從 FrameworkElement 繼承。) |
8 | IsMainMenu 獲取或設定一個值,該值指示此 Menu 是否接收主選單啟用通知。 |
9 | Items 獲取用於生成 ItemsControl 內容的集合。(從 ItemsControl 繼承。) |
10 | ItemsPanel 獲取或設定定義控制專案佈局的面板的模板。(從 ItemsControl 繼承。) |
11 | ItemsSource 獲取或設定用於生成 ItemsControl 內容的集合。(從 ItemsControl 繼承。) |
12 | ItemStringFormat 獲取或設定一個複合字符串,該字串指定如果專案顯示為字串,則如何格式化 ItemsControl 中的專案。(從 ItemsControl 繼承。) |
13 | ItemTemplate 獲取或設定用於顯示每個專案的 DataTemplate。(從 ItemsControl 繼承。) |
14 | ToolTip 獲取或設定在使用者介面 (UI) 中為此元素顯示的工具提示物件。(從 FrameworkElement 繼承。) |
15 | VerticalContentAlignment 獲取或設定控制元件內容的垂直對齊方式。(從 Control 繼承。) |
16 | Width 獲取或設定元素的寬度。(從 FrameworkElement 繼承。) |
Menu 類中常用的事件
序號 | 事件和描述 |
---|---|
1 | ContextMenuClosing 在元素上的任何上下文選單關閉之前發生。(從 FrameworkElement 繼承。) |
2 | ContextMenuOpening 當元素上的任何上下文選單開啟時發生。(從 FrameworkElement 繼承。) |
3 | KeyDown 當焦點在此元素上時按下某個鍵時發生。(從 UIElement 繼承。) |
4 | KeyUP 當焦點在此元素上時釋放某個鍵時發生。(從 UIElement 繼承。) |
5 | ToolTipClosing 在元素上的任何工具提示關閉之前發生。(從 FrameworkElement 繼承。) |
6 | ToolTipOpening 當元素上的任何工具提示開啟時發生。(從 FrameworkElement 繼承。) |
7 | TouchDown 當手指觸控式螢幕幕時且手指位於此元素上方時發生。(從 UIElement 繼承。) |
8 | TouchEnter 當觸控從此元素邊界的外部移動到內部時發生。(從 UIElement 繼承。) |
9 | TouchLeave 當觸控從此元素邊界的內部移動到外部時發生。(從 UIElement 繼承。) |
10 | TouchMove 當手指在螢幕上移動時且手指位於此元素上方時發生。(從 UIElement 繼承。) |
11 | TouchUp 當手指從螢幕上抬起時且手指位於此元素上方時發生。(從 UIElement 繼承。) |
示例
讓我們建立一個名為 WPFMenuControl 的新 WPF 專案。
將選單控制元件從工具箱拖動到設計視窗。
以下示例包含三個選單選項和一些選單項。當用戶單擊某個專案時,程式會更新標題。以下是 XAML 程式碼:
<Window x:Class = "WPFMenuControl.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:WPFMenuControl" mc:Ignorable = "d" Title = "MainWindow" Height = "350" Width = "604"> <Grid> <Menu HorizontalAlignment = "Left" VerticalAlignment = "Top" Width = "517"> <MenuItem Header = "File"> <MenuItem Header = "Item 1" HorizontalAlignment = "Left" Width = "140" Click = "MenuItem_Click" /> <MenuItem Header = "Item 2" HorizontalAlignment = "Left" Width = "140" Click = "MenuItem_Click" /> <Separator HorizontalAlignment = "Left" Width = "140" /> <MenuItem Header = "Item 3" HorizontalAlignment = "Left" Width = "140" Click = "MenuItem_Click"/> </MenuItem> <MenuItem Header = "Edit"> <MenuItem Header = "Item 1" HorizontalAlignment = "Left" Width = "140" Click = "MenuItem_Click1" /> <MenuItem Header = "Item 2" HorizontalAlignment = "Left" Width = "140" Click = "MenuItem_Click1" /> <Separator HorizontalAlignment = "Left" Width = "140" /> <MenuItem Header = "Item 3" HorizontalAlignment = "Left" Width = "140" Click = "MenuItem_Click1" /> </MenuItem> <MenuItem Header = "View"> <MenuItem Header = "Item 1" HorizontalAlignment = "Left" Width = "140" Click = "MenuItem_Click2" /> <MenuItem Header = "Item 2" HorizontalAlignment = "Left" Width = "140" Click = "MenuItem_Click2" /> <Separator HorizontalAlignment = "Left" Width = "140" /> <MenuItem Header = "Item 3" HorizontalAlignment = "Left" Width = "140" Click = "MenuItem_Click2"/> </MenuItem> </Menu> </Grid> </Window>
以下是 C# 中的事件實現。
using System.Windows; using System.Windows.Controls; namespace WPFMenuControl { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void MenuItem_Click(object sender, RoutedEventArgs e) { MenuItem item = sender as MenuItem; this.Title = "File: " + item.Header; } private void MenuItem_Click1(object sender, RoutedEventArgs e) { MenuItem item = sender as MenuItem; this.Title = "Edit: " + item.Header; } private void MenuItem_Click2(object sender, RoutedEventArgs e) { MenuItem item = sender as MenuItem; this.Title = "View: " + item.Header; } } }
編譯並執行上述程式碼後,將產生以下輸出:

建議您執行上述示例程式碼,並嘗試 Menu 類的其他屬性和事件。