共用方式為


SimpleMenu 及 SimpleMenuItem

本頁僅適用 WPF 專案

功能表是一種項目集合控制項,會以階層方式來組織與命令和事件處理常式相關的元素。您可以在 Microsoft Expression Blend 中放置內容,方法是按兩下功能表,然後在其中繪製元素 (例如矩形)。此外,也可以用滑鼠右鍵按一下 [物件與時間軸] 下的功能表,然後按一下 [新增 SimpleMenuItem] 將個別項目新增至集合,或按一下 [將 ItemsSource 繫結至資料] 產生某個資料來源中之 [MenuItem] 元素的集合。若要新增第二層功能表項目,您可以用滑鼠右鍵按一下 [物件與時間軸] 下的功能表項目,然後按一下 [新增 SimpleMenuItem],或從 [資產庫] Cc295350.0224cabd-5da1-4e01-bddd-4a647401a098(zh-tw,Expression.10).png 的 [本機樣式] 索引標籤中新增自訂功能表項目。

您可以編輯功能表項目的文字,方法是以滑鼠右鍵按一下 [物件與時間軸] 下的功能表項目,然後按一下 [編輯文字],也可以按兩下功能表項目使之變為作用中狀態,然後在其中繪製控制項。若要在畫板上檢視功能表項目下已展開的子功能表項目,您可以用滑鼠右鍵按一下 [物件與時間軸] 下的父功能表項目,然後按一下 [展開 MenuItem]。

新增兩個項目和一個分隔符號之後的 SimpleMenu 控制項的畫板檢視

Cc295350.6f7455aa-d548-46a9-b93c-4b1eaefe455d(zh-tw,Expression.10).png

深入控制項範本

SimpleMenu 控制項範本由下列項目組成:

  • Grid 面板:在功能表內用來容納多個子項目。Grid 可讓應用程式使用者介面 (UI) 設計師輕鬆地將更多元素新增至範本。

  • Border 元素:此元素有 BorderThickness 屬性,可以透過範本繫結至套用此範本之功能表控制項的 BorderThickness 屬性。

  • StackPanel:位於 Grid 元素內,用來配置功能表項目。根據預設,StackPanel 的 Orientation 屬性會設為 Horizontal。

SimpleMenuItem 控制項範本由下列項目組成:

  • Grid 面板:在功能表項目內用來容納多個子項目。Grid 可讓設計師更輕鬆地將更多元素新增至範本。此 [Grid] 面板使用大小共用的概念,可讓功能表中所有的功能表項目寬度都相同。

  • 名稱為 Icon 的 ContentPresenter 元素:繫結至套用此範本之功能表項目的 Icon 屬性。

  • 名稱為 GlyphPanel 的 Grid 面板:當功能表項目為可核取項目時用來顯示核取記號。根據預設,[圖像] 元素會呈摺疊狀態,但可以使用 IsChecked 觸發程序來顯示。

  • 名稱為 HeaderHost 的 ContentPresenter 元素:繫結至套用此範本之功能表項目的 Header 屬性。此繫結是在 HeaderHost 元素的 ContentSource 屬性中設定。

  • 名稱為 ArrowPanel 的 Grid 面板:提供一種展開功能表項目的方法。根據預設,ArrowPanel 會呈摺疊狀態,但可以使用 Role = SubmenuHeader 觸發程序來顯示,此觸發程序會將功能表項目識別為子功能表標題 (具有子功能表項目的第二層或更低層功能表項目)。

  • 名稱為 SubMenuPopup 的快顯元素:用來容納任何現有的子功能表項目。這些功能表項目都放在一個標記為 [項目載體] 的 StackPanel 元素中,讓此功能表項目知道要將子功能表項目放在何處。若要以不同方式排列功能表項目,可使用不同的版面配置面板 (例如 WrapPanel),方法是用滑鼠右鍵按一下 [物件與時間軸] 下的 StackPanel 元素,指向 [變更版面配置類型],然後選取面板。

    物件檢視:SimpleMenu 控制項 (左) 及 SimpleMenuItem 控制項 (右) 的基本部分 (範本)

    Cc295350.3c30a1c8-c055-441a-86ee-6038a02a6087(zh-tw,Expression.10).pngCc295350.2183480e-56b0-4241-a8da-4be1527de135(zh-tw,Expression.10).png

Cc295350.7e183f1f-37d8-4dcb-980c-19a5d61ca087(zh-tw,Expression.10).gif回到頁首

使用屬性觸發程序

控制項範本中的屬性觸發程序,可讓控制項回應屬性變更。您可以在 [互動] 面板中,按一下 [觸發程序] 底下的項目,檢視觸發程序啟動時變更的屬性。例如,在功能表項目的範本中,當 IsChecked 屬性為 True 時,表示套用範本的功能表項目是可核取項目,因此觸發程序會使 GlyphPanel 元素顯示。

Cc295350.7e183f1f-37d8-4dcb-980c-19a5d61ca087(zh-tw,Expression.10).gif回到頁首

使用筆刷

SimpleMenu 及 SimpleMenuItem 範本會使用 SimpleStyles.xaml 資源字典中的下列筆刷資源:

  • 功能表的 Background 屬性是使用 [LightBrush] 來設定,但當 IsEnabled 為 False 時,則是使用 [DisabledBackgroundBrush] 來設定。

  • 功能表的 BorderBrush 屬性是使用 [NormalBorderBrush] 來設定,但當 IsEnabled 為 False 時,則是使用 [DisabledBorderBrush] 來設定。

  • SubMenuBorder 元素的 Background 屬性是使用 [WindowBackgroundBrush] 來設定。

  • SubMenuBorder 元素的 BorderBrush 屬性是使用 [SolidBorderBrush] 來設定。

此外,範本會使用系統色彩繫結,讓控制項能夠使用系統預設值。在許多情況中,您可能會想要變更這些筆刷,以便建立獨特的設計。您可以編輯控制系統色彩的觸發程序,以達到此目的。

Cc295350.7e183f1f-37d8-4dcb-980c-19a5d61ca087(zh-tw,Expression.10).gif回到頁首

最佳作法與設計方針

  • 一般而言,如果您希望設計師在控制項上新增更多視覺元素,請使用 Grid 控制項作為範本的根。Expression Blend 會搜尋類似 Grid 控制項的版面配置面板,並且將它設為預設啟用,讓新增至畫板的新元素成為版面配置面板的子元素。

  • 快顯控制項會重疊在其他任何控制項的上方呈現。這通常是功能表所需要的。快顯控制項本身具有邏輯,可設定相對於父控制項的位移,例如將 Placement 屬性設為 "Right"。在功能表的情況中,功能表的展開是受與父控制項的繫結所控制。為了讓功能表能正確展開,必須保留此繫結。

  • 功能表項目範本的根 Grid 面板使用大小共用的概念,可讓功能表中所有功能表項目的寬度都相同。若要變更此行為,必須在 [XAML] 檢視中修改 SharedSizeGroup 屬性,因為 Expression Blend 不會在 [屬性] 面板中顯示此屬性。在大部分的情況中,您不需要修改 SharedSizeGroup,因為它可讓功能表適當地調整大小。變更功能表項目外觀的最佳作法是,在功能表項目範本的根 Grid 面板中繪製元素,而非重新排列欄或內容。

  • 部分功能表項目範本觸發程序可使用名為 Role 的屬性。「角色」的設定取決於功能表項目在功能表階層中的層級。若修改功能表項目範本,您可能會想要保留角色觸發程序。實際系統 MenuItem 控制項所用的範本比 SimpleMenuItem 複雜許多。MenuItem 控制項範本會使用樣式,根據功能表項目的角色,在不同的控制項範本間切換。SimpleMenuItem 使用單一範本來達成此效果,因此較容易編輯。

  • 若要編輯 SimpleMenuItem 範本,請按一下 [資源] 面板中 [SimpleMenuItem] 樣式旁的 [編輯資源] 按鈕。然後,在樣式的編輯模式下,以滑鼠右鍵按一下 [物件與時間軸] 下的 [樣式],指向 [編輯控制項組件 (範本)],然後按一下 [編輯範本] 或 [編輯複本]。

  • 如需有關如何將功能表項目連接至命令的詳細資訊,請參閱 MSDN 文件庫功能表概觀 (英文)。

Cc295350.7e183f1f-37d8-4dcb-980c-19a5d61ca087(zh-tw,Expression.10).gif回到頁首