我从WP 8.1应用程序调用ContentDialog,该应用程序从用户收集数据并将其写入应用程序数据。
然后我从Application Data重新读取变量并将其显示在父GUI中。
private void Settings_Click(object sender, RoutedEventArgs e)
{
new AppSettings(); // Open dialog
dataInit(); // Re-read the data from AppData
guiInit(); // Populate GUI /w new data
}
由于某种原因,在使用新数据关闭ContentDialog后,GUI不会刷新。如果我打开ContentDialog并再次关闭它,无论我是否修改任何数据,它都会刷新。
我觉得ContentDialog是异步运行的,但据我所知,打开它会阻止执行,因为它在同一个线程中运行。有什么想法吗?
答案 0 :(得分:0)
您的代码不是 async ,您不会等待用户的选择 - 您显示对话框,在用户关闭它之前,UI会更新。看看这个:
private async void Settings_Click(object sender, RoutedEventArgs e) // async void hence it's an event
{
await new MessageDialog("Wait for user").ShowAsync(); // Open dialog
dataInit(); // Re-read the data from AppData
guiInit(); // Populate GUI /w new data
}
在上面的代码中,进一步执行正在等待 MessageDialog 关闭。我不确定你的new AppSettings();
中有什么,但是如果你想等待用户的选择,那么你需要异步实现或者以某种方式实现它。