XAML - 上下文選單



ContextMenu 表示一個彈出選單,它使控制元件能夠公開特定於控制元件上下文的函式。只要使用者介面從該元素內部請求上下文選單,它就會出現。ContextMenu 類的層次繼承如下:

ContextMenu Hierarchy

屬性

序號 屬性及描述
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; 
         } 
      } 
   } 
}

編譯並執行上述程式碼後,將生成以下螢幕:

ContextMenu Output

建議您執行上述示例程式碼並嘗試其他一些屬性和事件。

xaml_controls.htm
廣告

© . All rights reserved.