2015-06-19 125 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和其他文本编辑控件上应用此上下文菜单。祝你好运!