当我调用Focus方法将焦点设置在UWP窗体的另一个控件中时,稍后会调用当前活动控件的LostFocus事件。
例如:
MyControl.Focus(FocusState.Keyboard);
SaveFormData();
问题是在SaveFormData()之后调用LostFocus。活动控件是一个自定义控件,其中LostFocus用于将控件数据与数据模型绑定。 在Win32中,我会使用PostMessage函数解决它,但我在UWP中找不到类似的东西。
Focus方法()的序列是什么?它是异步调用的吗?也许使用Dispatcher?如何在调用SaveFormData()之前强制LostFocus?
答案 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调用之前放置一点延迟。试试这些方法。