可编辑的组合框覆盖了我的上下文菜单

时间:2012-08-30 14:24:06

标签: wpf combobox contextmenu

我使用XAML实现了一个可编辑的ComboBox,它应该显示我自己的上下文菜单:

<ComboBox IsEditable="True"
          ContextMenu="{StaticResource contextMenu}"
          ContextMenuClosing="contextClosing">
    <ComboBoxItem Content="Item1" />
    <ComboBoxItem Content="Item2" />
</ComboBox>

但它没有显示我的上下文菜单,而是显示编辑上下文菜单(带有剪切,复制和粘贴)。

有没有办法覆盖可编辑的上下文菜单?

2 个答案:

答案 0 :(得分:1)

必须加载可编辑部分的文本框以覆盖标准上下文菜单:

<ComboBox IsEditable="True" ContextMenuService.ShowOnDisabled="True" 
     Name="combobox" Loaded="combobox_Loaded">
     <ComboBox.ContextMenu>
         <ContextMenu>
            <MenuItem Header="test"></MenuItem>
         </ContextMenu>
     </ComboBox.ContextMenu>
     <ComboBoxItem Content="Item1"></ComboBoxItem>
     <ComboBoxItem Content="Item2"></ComboBoxItem>
</ComboBox>  

 private void combobox_Loaded(object sender, RoutedEventArgs e)
 {
   (VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(combobox, 0), 2) as TextBox).ContextMenu = combobox.ContextMenu;
 }  

答案 1 :(得分:0)

2021 年,它仍然是一个问题! dontcare 的出色观察,必须加载组合框才能修改它的一部分。但是,您可以访问文本框部分,而不是导航可视化树;

private TextBox cmbTextBox 
{ 
   get { return GetTemplateChild("PART_EditableTextBox") as TextBox; }
}