【发布时间】:2020-05-16 03:44:23
【问题描述】:
我在多个控件上覆盖 ApplicationCommands.Copy 并取得了成功,但无法弄清楚如何让它与 WPF 中的可编辑 ComboBox 一起工作。例如,TextBox 可以像这样正常工作:
var copyCommandBinding = new CommandBinding(ApplicationCommands.Copy, CopyToClipboardExecuted);
MyTextBox.CommandBindings.Add(copyCommandBinding); // Works as expected
当我尝试对可编辑的 ComboBox 执行相同操作时,它不起作用,即使我为 CanExcute 返回 true:
var copyCommandBinding = new CommandBinding(ApplicationCommands.Copy, CopyToClipboardExecuted);
MyComboBox.CommandBindings.Add(copyCommandBinding); // Nothing happens
我通过添加一个 KeyUp 事件处理程序并测试 CTRL+C 来解决这个问题,这感觉不是正确的解决方案:
public MyWindow()
{
MyComboBox.KeyUp += MyComboBox_KeyUp;
}
private void MyComboBox_KeyUp(object sender, KeyEventArgs e)
{
if (!Keyboard.IsKeyDown(Key.LeftCtrl) && !Keyboard.IsKeyDown(Key.RightCtrl)) return;
if (e.Key == Key.C) CopyToClipboardExecuted();
}
我确实知道在可编辑的 ComboBox 上添加 TextChanged 事件处理程序需要一些额外的工作来利用 TestBoxBase 的事件,所以我想知道是否有一些类似的技巧来获得对相同 TextBoxBase 的 ApplicationCommands.Copy 支持。我似乎找不到任何涵盖此细节的文档。
感谢任何猜测、帮助或提示,谢谢!
【问题讨论】:
标签: c# wpf combobox copy-paste