Wpf 可编辑组合框覆盖我的上下文菜单
我用XAML实现了一个可编辑的Wpf 可编辑组合框覆盖我的上下文菜单,wpf,combobox,contextmenu,Wpf,Combobox,Contextmenu,我用XAML实现了一个可编辑的组合框,它应该显示我自己的上下文菜单: <ComboBox IsEditable="True" ContextMenu="{StaticResource contextMenu}" ContextMenuClosing="contextClosing"> <ComboBoxItem Content="Item1" /> <ComboBoxItem Content="Item2" /
组合框
,它应该显示我自己的上下文菜单:
<ComboBox IsEditable="True"
ContextMenu="{StaticResource contextMenu}"
ContextMenuClosing="contextClosing">
<ComboBoxItem Content="Item1" />
<ComboBoxItem Content="Item2" />
</ComboBox>
<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;
}
但是它没有显示我的上下文菜单,而是显示编辑上下文菜单(带有剪切、复制和粘贴)
是否有方法覆盖可编辑上下文菜单?必须加载可编辑零件的文本框以覆盖标准上下文菜单:
<ComboBox IsEditable="True"
ContextMenu="{StaticResource contextMenu}"
ContextMenuClosing="contextClosing">
<ComboBoxItem Content="Item1" />
<ComboBoxItem Content="Item2" />
</ComboBox>
<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;
}
已加载私有无效组合框(对象发送方,路由目标)
{
(VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(combobox,0),2)作为文本框);
}
必须加载可编辑零件的文本框以覆盖标准上下文菜单:
<ComboBox IsEditable="True"
ContextMenu="{StaticResource contextMenu}"
ContextMenuClosing="contextClosing">
<ComboBoxItem Content="Item1" />
<ComboBoxItem Content="Item2" />
</ComboBox>
<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;
}
已加载私有无效组合框(对象发送方,路由目标)
{
(VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(combobox,0),2)作为文本框);
}
2021年,这仍然是一个问题!dontcare观察得非常好,必须加载组合框才能修改其中的部分内容。但是,您可以通过以下方式访问文本框部分,而不是浏览可视化树:
private TextBox cmbTextBox
{
get { return GetTemplateChild("PART_EditableTextBox") as TextBox; }
}
2021年,这仍然是一个问题!dontcare观察得非常好,必须加载组合框才能修改其中的部分内容。但是,您可以通过以下方式访问文本框部分,而不是浏览可视化树:
private TextBox cmbTextBox
{
get { return GetTemplateChild("PART_EditableTextBox") as TextBox; }
}