WPF,将键盘焦点放在先前折叠的控件上



在一系列演示文稿更改过程中,我试图给一个特定的控制键盘焦点。假设控件处于隐藏的可见性状态。在函数调用中,我可以将它的可见性更改为可见,并将键盘焦点设置在它上,而不会出现任何问题。但是,如果控件的可见性设置为collapsed,并且我尝试将可见性设置回可见,然后将焦点设置在它上,则不需要。

有没有一个过程可以让控件从折叠状态移动到可见状态并获得键盘焦点?

这可能是一个时间问题,您设置为可见的控件还没有准备好接受焦点。在处理动态UI更改时,这种情况经常发生。

您应该仍然能够对控件进行聚焦,但您需要对聚焦操作进行排队,直到控件正确初始化为止。简单地使用如下所示的BeginInvoke调用就可以了。

Dispatcher.BeginInvoke(() =>
{
    //Set focus here
});

这不是控件初始化的问题。这又是一个转换视觉状态的问题。

为了对此进行闭环,通过调用控件来解决问题。UpdateLayout()

最新更新