2015-06-19 210 views
3

摘要:我的全局「ContextMenu」樣式不適用於文本框和其他控件的默認上下文菜單。WPF默認TextBox ContextMenu樣式

細節:我的應用程序中有幾個文本框沒有明確的ContextMenu。所以,當你右鍵點擊它們時,你會看到剪切,複製和粘貼的標準上下文菜單選項。但是,該上下文菜單並沒有最終使用我在Generic.xaml中設置的全局「ContextMenu」風格。 TextBox上的默認上下文菜單實際上並不是ContextMenu?

如果我明確設置文本框的ContextMenu,那麼菜單將使用我的全局ContextMenu樣式。例如,這工作得很好:

<Style TargetType="{x:Type TextBox}"> 
    <Setter Property="ContextMenu" Value="{StaticResource StandardContextMenu}"/> 
</Style> 

<ContextMenu x:Key="StandardContextMenu"> 
    <MenuItem Header="Cut" Command="ApplicationCommands.Cut"/> 
    <MenuItem Header="Copy" Command="ApplicationCommands.Copy"/> 
    <MenuItem Header="Paste" Command="ApplicationCommands.Paste"/> 
</ContextMenu> 

但我真的不希望有剛剛創建這個完全是多餘的文本菜單讓WPF應用正確的風格。另外,除了TextBox之外,還有其他一些控件在單擊時顯示ContextMenus,而且它們也不會採用全局的ContextMenu樣式。

那麼,當我右鍵單擊未定義明確的ContectMenu的TextBox時,實際顯示的是什麼?那東西不是一個ContextMenu嗎?爲什麼它不使用全局的ContextMenu風格?

編輯: 展望這進一步使用史努比,我發現,當我明確地添加一個ContextMenu,它顯示爲文本菜單可視化樹。但是顯示的默認ContextMenu在可視樹中顯示爲EditorContextMenu。接下來的問題是如何在全局上設置EditorContextMenu的樣式。

Context Menus

+0

事情自2010年以來可能發生了變化,但根據MSDN版主的回覆,無法完成:https://social.msdn.microsoft.com/Forums/zh-CN/89860b05-b1b0-4248 -992a-5e5351c34ac1/how-can-i-changed-style-of-texteditorcontextmenu-editorcontetxmenu?forum = wpf – Bobby

+0

你是怎麼找到Snoop的?我看不到樹的任何不可見的內容,所以沒有上下文菜單。 – ygoe

回答

1

你堅持,因爲其樣式,創建一個自定義文本菜單確實是不支持的,而且據我所知,是不可能的。不過,我想推薦你只定義每個項目的命令並沒有明確的標題文字:

<ContextMenu x:Key="TextBoxContextMenu"> 
    <MenuItem Command="Cut"/> 
    <MenuItem Command="Copy"/> 
    <MenuItem Command="Paste"/> 
</ContextMenu> 

定義只有命令會自動在user's系統語言,標題文字和快捷鍵。

此外,不要忘記在PasswordBox,ComboBox和其他文本編輯控件上應用此上下文菜單。祝你好運!