在WP 8.1中调用ContentDialog后刷新父级

时间:2014-12-23 09:46:28

标签: c# windows-phone-8.1

我从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是异步运行的,但据我所知,打开它会阻止执行,因为它在同一个线程中运行。有什么想法吗?

1 个答案:

答案 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();中有什么,但是如果你想等待用户的选择,那么你需要异步实现或者以某种方式实现它。