Xaml / Win RT - 等待控件完全呈现

时间:2015-04-15 13:53:29

标签: vb.net async-await winrt-async

在winRT应用程序中,点击按钮将在页面上呈现多个控件。点击另一个按钮将保存这些控件的内容。

为了保存控件的内容,我的代码会迭代页面的控件集。

我遇到的问题是用户点击了保存按钮,而所有控件都没有完成呈现。

我的问题很简单:如何在启用保存按钮之前等待渲染完成?

Private Async Sub LoadControls() 
'create controls ...
'add controls to a hub section ...
'add section to a hub, myHub is defined in Xaml
myHub.Sections.Add(myHubSection)
End Sub

Private Async Sub ReadControls()
For Each hubSection in MyHub
'...
'not all controls are available here, because they are not yet rendered
Next
End Sub

Private Async Sub LoadButton(sender as object, e as RoutedEventArgs) Handles LoadButton.Click
Await LoadControls()
End Sub

Private Async Sub SaveButton(sender as object, e as RoutedEventArgs) Handles LoadButton.Click
Await ReadControls()
End Sub

我尝试了很多使用Dispatcher和其他东西的解决方案,但都没有用。 有简单的解决方案吗? 感谢

1 个答案:

答案 0 :(得分:0)

我认为,执行此操作的最佳方法是等待Dispatcher线程处于空闲状态。如果控件中有图像要渲染,则必须解析VisualTree,找到每个图像并等待它们被渲染(使用ImageOpened事件):

对不起我的C#:)

    // Do "nothing" when the dispacher is idle
    await Dispatcher.RunAsync(CoreDispatcherPriority.Idle, () => { });