我正在尝试以下方法:
// Key to send
var key = Key.F2;
// Event to send
var routedEvent = Keyboard.KeyDownEvent;
TreeControl.RaiseEvent(
new KeyEventArgs(
Keyboard.PrimaryDevice,
PresentationSource.FromVisual(TreeControl),
0,
key) { RoutedEvent = routedEvent }
);
但我无法以编程方式模拟F2虽然TreeControl
具有键盘焦点,但如果我在手动后立即按F2它可以正常工作。请帮忙。
我试图在调用OnItemSelected
处理程序时调用此代码(必要时并非总是如此)。
答案 0 :(得分:0)
这是我的代码:
// First: PreviewKeyDown
KeyEventArgs previewArgs =
new KeyEventArgs(Keyboard.PrimaryDevice, Keyboard.PrimaryDevice.ActiveSource,
0, Key.Down);
previewArgs.RoutedEvent = Keyboard.PreviewKeyDownEvent;
focusedTextBox.RaiseEvent(previewArgs);
// Second: KeyDown
IInputElement newFocusedElement = Keyboard.FocusedElement;
KeyEventArgs args =
new KeyEventArgs(Keyboard.PrimaryDevice, Keyboard.PrimaryDevice.ActiveSource,
0, Key.Down);
args.RoutedEvent = Keyboard.KeyDownEvent;
newFocusedElement.RaiseEvent(args);
无论如何,你和我之间没有太多差异......
答案 1 :(得分:0)
最初发布的代码是正确的,我发现它模拟F2正确按树视图。只是另一个与此无关的问题使我无法看到这一点。
当我尝试从OnItemSelected
处理程序模拟F2点击时,它不起作用,但LayoutUpdated
处理程序中的相同工作正常。
因此树视图需要完全更新,以便接受按键操作。