UWP中的焦点序列方法?

时间:2016-05-19 07:24:43

标签: c# xaml

当我调用Focus方法将焦点设置在UWP窗体的另一个控件中时,稍后会调用当前活动控件的LostFocus事件。

例如:

MyControl.Focus(FocusState.Keyboard); 
SaveFormData();

问题是在SaveFormData()之后调用LostFocus。活动控件是一个自定义控件,其中LostFocus用于将控件数据与数据模型绑定。 在Win32中,我会使用PostMessage函数解决它,但我在UWP中找不到类似的东西。

Focus方法()的序列是什么?它是异步调用的吗?也许使用Dispatcher?如何在调用SaveFormData()之前强制LostFocus?

1 个答案:

答案 0 :(得分:0)

之前我遇到过类似的问题,我用这段代码解决了。这基本上会强制LostFocus对你传递给它的控件。

void LoseFocus(Control control) {
    var isTabStop = control.IsTabStop;
    control.IsTabStop = false;
    control.IsEnabled = false;
    control.IsEnabled = true;
    control.IsTabStop = isTabStop;
}

问题正是您的想法,Focus方法执行异步操作。另一种解决方案可能是使用与Dispatcher的异步调用,并在SaveFormData调用之前放置一点延迟。试试这些方法。