我在我的 C# WPF 应用程序中使用了 ScintillaNet 编辑控件。在我的主窗口中,我设置了一些 RoutedCommands。ScintillaNet 控件托管在 WindowsFormsHost 中。当 ScintillaNet 控件具有焦点时,RoutedCommands 不起作用。
我尝试捕获击键并手动执行 RoutedCommands 但 CanExecute 总是失败:
WindowsFormsHost wfh = new WindowsFormsHost();
Scintilla editor = new Scintilla();
wfh.Child = editor;
wfh.Child.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(Child_PreviewKeyDown);
....
void Child_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e.KeyData == Keys.F5)
// Window1 is the main window class
// handle is a reference to the main window
if (Window1.CmdRun.CanExecute(wfh, handle)) {
Window1.CmdRun.Execute(wfh, handle);
}
else {
Console.WriteLine("CANT EXECUTE");
}
}
}
谁能告诉我如何正确地做到这一点?
谢谢