C# WPF:重新启用容器后恢复键盘焦点
我有一个网格窗口,里面有两个文本框。其中一个有键盘焦点。如果我禁用网格,然后在一段时间后重新启用,键盘焦点将不会恢复到以前保存它的文本框中。 实际发生的是光标显示但不闪烁 我尝试过在Grid的IsEnabledChanged事件中设置文本框的焦点,但我尝试过的方法(Keyboard.SetFocus、txtBox.focus、FocusManager方法…)都不起作用 注意:我在Dispatcher线程中禁用并启用网格,因此这不是线程问题。此外,Keyboard.FocusRestoreMode设置为自动。C# WPF:重新启用容器后恢复键盘焦点,c#,wpf,keyboard,focus,C#,Wpf,Keyboard,Focus,我有一个网格窗口,里面有两个文本框。其中一个有键盘焦点。如果我禁用网格,然后在一段时间后重新启用,键盘焦点将不会恢复到以前保存它的文本框中。 实际发生的是光标显示但不闪烁 我尝试过在Grid的IsEnabledChanged事件中设置文本框的焦点,但我尝试过的方法(Keyboard.SetFocus、txtBox.focus、FocusManager方法…)都不起作用 注意:我在Dispatcher线程中禁用并启用网格,因此这不是线程问题。此外,Keyboard.FocusRestoreMode
有人面对过这个问题吗?有办法解决这个问题吗?我设法推断出,当网格的IsEnabledChanged启动时,文本框仍然处于禁用状态。但我找不到当网格内容也被启用时会触发的事件。。尝试通过dispatcher
dispatcher.InvokeAsync(()=>textBox.focus())设置焦点代码>。这里的问题是什么IsEnabledChanged
是在布局之前发生的,所以直接设置焦点不起作用,但应该通过dispatcher进行设置(以后会发生这种情况)。@Sinatr:是的,这似乎很管用!非常感谢。如果你把它作为一个答案,我会接受的。这个解决方案在4年多后仍然有用。我的症状更奇怪:我的文本框中有一个闪烁的光标,但没有键盘响应。WPF显然不应该允许这样的状态,但它确实存在。谢谢@Sinatr。