1

ComboBox独自のコンテキスト メニューを表示する XAML で編集可能なものを実装しました。

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

ただし、コンテキスト メニューを表示する代わりに、編集コンテキスト メニュー (切り取り、コピー、貼り付け) を表示します。

編集可能なコンテキスト メニューを上書きする方法はありますか?

4

2 に答える 2

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;
 }  
于 2012-08-31T13:43:30.023 に答える
0

2021年、それはまだ問題です!dontcareによる優れた観察、コンボボックスの一部を変更するには、コンボボックスをロードする必要があります。ただし、ビジュアル ツリーをナビゲートするのではなく、次のようにテキスト ボックス部分にアクセスできます。

private TextBox cmbTextBox 
{ 
   get { return GetTemplateChild("PART_EditableTextBox") as TextBox; }
}  
于 2021-04-16T19:27:49.857 に答える