Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF:重新启用容器后恢复键盘焦点_C#_Wpf_Keyboard_Focus - Fatal编程技术网

C# WPF:重新启用容器后恢复键盘焦点

C# WPF:重新启用容器后恢复键盘焦点,c#,wpf,keyboard,focus,C#,Wpf,Keyboard,Focus,我有一个网格窗口,里面有两个文本框。其中一个有键盘焦点。如果我禁用网格,然后在一段时间后重新启用,键盘焦点将不会恢复到以前保存它的文本框中。 实际发生的是光标显示但不闪烁 我尝试过在Grid的IsEnabledChanged事件中设置文本框的焦点,但我尝试过的方法(Keyboard.SetFocus、txtBox.focus、FocusManager方法…)都不起作用 注意:我在Dispatcher线程中禁用并启用网格,因此这不是线程问题。此外,Keyboard.FocusRestoreMode

我有一个网格窗口,里面有两个文本框。其中一个有键盘焦点。如果我禁用网格,然后在一段时间后重新启用,键盘焦点将不会恢复到以前保存它的文本框中。 实际发生的是光标显示但不闪烁 我尝试过在Grid的IsEnabledChanged事件中设置文本框的焦点,但我尝试过的方法(Keyboard.SetFocus、txtBox.focus、FocusManager方法…)都不起作用 注意:我在Dispatcher线程中禁用并启用网格,因此这不是线程问题。此外,Keyboard.FocusRestoreMode设置为自动。
有人面对过这个问题吗?有办法解决这个问题吗?我设法推断出,当网格的IsEnabledChanged启动时,文本框仍然处于禁用状态。但我找不到当网格内容也被启用时会触发的事件。

。尝试通过dispatcher
dispatcher.InvokeAsync(()=>textBox.focus())设置焦点。这里的问题是什么
IsEnabledChanged
是在布局之前发生的,所以直接设置焦点不起作用,但应该通过dispatcher进行设置(以后会发生这种情况)。@Sinatr:是的,这似乎很管用!非常感谢。如果你把它作为一个答案,我会接受的。这个解决方案在4年多后仍然有用。我的症状更奇怪:我的文本框中有一个闪烁的光标,但没有键盘响应。WPF显然不应该允许这样的状态,但它确实存在。谢谢@Sinatr。