我使用XAML实现了一个可编辑的ComboBox
,它应该显示我自己的上下文菜单:
<ComboBox IsEditable="True"
ContextMenu="{StaticResource contextMenu}"
ContextMenuClosing="contextClosing">
<ComboBoxItem Content="Item1" />
<ComboBoxItem Content="Item2" />
</ComboBox>
但它没有显示我的上下文菜单,而是显示编辑上下文菜单(带有剪切,复制和粘贴)。
有没有办法覆盖可编辑的上下文菜单?
答案 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; }
}