- XAML 教程
- XAML - 首頁
- XAML - 概述
- XAML - 環境設定
- 在 MAC OS 上編寫 XAML 應用程式
- XAML 與 C# 程式碼
- XAML 與 VB.NET
- XAML - 構建塊
- XAML - 控制元件
- XAML - 佈局
- XAML - 事件處理
- XAML - 資料繫結
- XAML - 標記擴充套件
- XAML - 依賴屬性
- XAML - 資源
- XAML - 模板
- XAML - 樣式
- XAML - 觸發器
- XAML - 除錯
- XAML - 自定義控制元件
- XAML 有用資源
- XAML - 快速指南
- XAML - 有用資源
- XAML - 討論
XAML - 上下文選單
ContextMenu 表示一個彈出選單,它使控制元件能夠公開特定於控制元件上下文的函式。只要使用者介面從該元素內部請求上下文選單,它就會出現。ContextMenu 類的層次繼承如下:
屬性
| 序號 | 屬性及描述 |
|---|---|
| 1 | Background 獲取或設定一個畫刷,該畫刷提供控制元件的背景。(繼承自 Control) |
| 2 | BorderThickness 獲取或設定控制元件的邊框粗細。(繼承自 Control) |
| 3 | ContextMenu 獲取或設定當用戶介面 (UI) 從該元素內部請求上下文選單時應顯示的上下文選單元素。(繼承自 FrameworkElement。) |
| 4 | FontFamily 獲取或設定用於在控制元件中顯示文字的字型。(繼承自 Control) |
| 5 | FontSize 獲取或設定此控制元件中文字的大小。(繼承自 Control) |
| 6 | FontStyle 獲取或設定呈現文字的樣式。(繼承自 Control) |
| 7 | FontWeight 獲取或設定指定字型的粗細。(繼承自 Control) |
| 8 | Foreground 獲取或設定一個描述前景色顏色的畫刷。(繼承自 Control) |
| 9 | GroupStyle 獲取 GroupStyle 物件的集合,這些物件定義每一級組的外觀。(繼承自 ItemsControl) |
| 10 | HasItems 獲取一個值,該值指示 ItemsControl 是否包含專案。(繼承自 ItemsControl。) |
| 11 | Height 獲取或設定 FrameworkElement 的建議高度。(繼承自 FrameworkElement) |
| 12 | HorizontalAlignment 獲取或設定當 FrameworkElement 在佈局父級(如面板或專案控制元件)中組合時應用的水平對齊特徵。(繼承自 FrameworkElement) |
| 13 | IsFocused 獲取一個值,該值確定此元素是否具有邏輯焦點。這是一個依賴項屬性。(繼承自 UIElement。) |
| 14 | IsOpen 獲取或設定一個值,該值指示 ContextMenu 是否可見。 |
| 15 | IsEnabled 獲取或設定一個值,該值指示使用者是否可以與控制元件互動。(繼承自 Control) |
| 16 | ItemsSource 獲取或設定用於生成 ItemsControl 內容的物件源。(繼承自 ItemsControl) |
| 17 | Margin 獲取或設定 FrameworkElement 的外邊距。(繼承自 FrameworkElement) |
| 18 | Name 獲取或設定物件的標識名稱。當 XAML 處理器從 XAML 標記建立物件樹時,執行時程式碼可以透過此名稱引用 XAML 宣告的物件。(繼承自 FrameworkElement) |
| 19 | Opacity 獲取或設定物件的透明度。(繼承自 UIElement) |
| 20 | Style 獲取或設定在佈局和呈現期間為此物件應用的例項 Style。(繼承自 FrameworkElement) |
| 21 | VerticalAlignment 獲取或設定當 FrameworkElement 在父物件(如面板或專案控制元件)中組合時應用的垂直對齊特徵。(繼承自 FrameworkElement) |
| 22 | Width 獲取或設定 FrameworkElement 的寬度。(繼承自 FrameworkElement) |
方法
| 序號 | 方法及描述 |
|---|---|
| 1 | AddChild 將指定的物件作為 ItemsControl 物件的子物件新增。(繼承自 ItemsControl。) |
| 2 | Arrange 定位子物件並確定 UIElement 的大小。實現其子元素自定義佈局的父物件應從其佈局覆蓋實現中呼叫此方法以形成遞迴佈局更新。(繼承自 UIElement) |
| 3 | FindName 檢索具有指定識別符號名稱的物件。(繼承自 FrameworkElement) |
| 4 | Focus 嘗試將焦點設定到控制元件上。(繼承自 Control) |
| 5 | GetValue 從 DependencyObject 返回依賴項屬性的當前有效值。(繼承自 DependencyObject) |
| 6 | IsItemItsOwnContainer 確定指定專案是否(或是否有資格成為)其自己的容器。(繼承自 ItemsControl。) |
| 7 | OnDragEnter 在 DragEnter 事件發生之前呼叫。(繼承自 Control) |
| 8 | OnDragLeave 在 DragLeave 事件發生之前呼叫。(繼承自 Control) |
| 9 | OnDragOver 在 DragOver 事件發生之前呼叫。(繼承自 Control) |
| 10 | OnDrop 在 Drop 事件發生之前呼叫。(繼承自 Control) |
| 11 | OnContextMenuOpening 每當未處理的 ContextMenuClosing 路由事件在其路由中到達此類時呼叫。實現此方法以為此事件新增類處理。(繼承自 FrameworkElement。) |
| 12 | OnItemsChanged 當 Items 屬性更改時呼叫。(繼承自 ItemsControl。) |
| 13 | OnLostFocus 在 LostFocus 事件發生之前呼叫。(繼承自 Control) |
| 14 | ReadLocalValue 如果設定了局部值,則返回依賴項屬性的區域性值。(繼承自 DependencyObject) |
| 15 | SetBinding 使用提供的繫結物件將繫結附加到 FrameworkElement。(繼承自 FrameworkElement) |
| 16 | SetValue 設定 DependencyObject 上依賴項屬性的區域性值。(繼承自 DependencyObject) |
事件
| 序號 | 事件及描述 |
|---|---|
| 1 | Closed 當 ContextMenu 的特定例項關閉時發生。 |
| 2 | ContextMenuClosing 在元素上的任何上下文選單關閉之前發生。(繼承自 FrameworkElement。) |
| 3 | ContextMenuOpening 當元素上的任何上下文選單開啟時發生。(繼承自 FrameworkElement。) |
| 4 | DataContextChanged 當此元素的資料上下文更改時發生。(繼承自 FrameworkElement。) |
| 5 | DragEnter 當輸入系統報告以該元素作為目標的基礎拖動事件時發生。(繼承自 UIElement) |
| 6 | DragLeave 當輸入系統報告以該元素作為源的基礎拖動事件時發生。(繼承自 UIElement) |
| 7 | DragOver 當輸入系統報告以該元素作為潛在放置目標的基礎拖動事件時發生。(繼承自 UIElement) |
| 8 | Drop 當輸入系統報告以該元素作為放置目標的基礎放置事件時發生。(繼承自 UIElement) |
| 9 | GotFocus 當 UIElement 獲得焦點時發生。(繼承自 UIElement) |
| 10 | IsEnabledChanged 當 IsEnabled 屬性更改時發生。(繼承自 Control) |
| 11 | KeyDown 當 UIElement 具有焦點時按下鍵盤鍵時發生。(繼承自 UIElement) |
| 12 | KeyUp 當 UIElement 具有焦點時釋放鍵盤鍵時發生。(繼承自 UIElement) |
| 13 | LostFocus 當 UIElement 失去焦點時發生。(繼承自 UIElement) |
示例
以下示例包含一個具有 ContextMenu 的文字框,該選單可操作文字框內的文字。
以下是建立 TextBox、ContextMenu 和 MenuItems 以及一些屬性和事件的 XAML 程式碼。
<Window x:Class = "XAMLContextMenu.MainWindow"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
Title = "MainWindow" Height = "350" Width = "604">
<Grid>
<TextBox Name = "textBox1" TextWrapping = "Wrap" Margin = "10" Grid.Row = "7">
Hi, this is XAML tutorial.
<TextBox.ContextMenu>
<ContextMenu>
<MenuItem Header = "_Bold" IsCheckable = "True"
Checked = "Bold_Checked" Unchecked = "Bold_Unchecked" />
<MenuItem Header = "_Italic" IsCheckable = "True"
Checked = "Italic_Checked" Unchecked = "Italic_Unchecked" />
<Separator />
<MenuItem Header = "Increase Font Size" Click = "IncreaseFont_Click" />
<MenuItem Header = "_Decrease Font Size" Click = "DecreaseFont_Click" />
</ContextMenu>
</TextBox.ContextMenu>
</TextBox>
</Grid>
</Window>
以下是不同事件的 C# 實現。
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;
namespace XAMLContextMenu {
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window {
public MainWindow() {
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 < 18) {
textBox1.FontSize += 2;
}
}
private void DecreaseFont_Click(object sender, RoutedEventArgs e) {
if (textBox1.FontSize > 10) {
textBox1.FontSize -= 2;
}
}
}
}
編譯並執行上述程式碼後,將生成以下螢幕:
建議您執行上述示例程式碼並嘗試其他一些屬性和事件。