从属性更改的处理程序Store App调用MessageDialog

时间:2013-03-06 15:39:33

标签: windows-8 windows-store-apps unauthorizedaccessexcepti messagedialog

我正在尝试从MessageDialog处理程序中调用PropertyChanged。第一次通话总是成功的,但是第二次调用Dialog时,我会得到UnauthorizedAccessException

我试图将呼叫包裹在Dispatcher中,但我也有同样的行为。

以下是代码(MainPage.xaml.cs的代码段):

void PropertyChanged(object sender, PropertyChangedEventArgs e)
{
  await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
  {
    showMessage("Message", "Title");
  });
}

async void showMessage(String message, String title)
{
  MessageDialog dialog = new MessageDialog(message, title);
  await dialog.ShowAsync();
}

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

我认为您的问题是多个属性更改将导致多次调用以显示对话框。您应该一次只显示一个对话框:

bool _isShown = false;
async void showMessage(String message, String title)
{
    if (_isShown == false)
    {
        _isShown = true;

        MessageDialog dialog = new MessageDialog(message, title);
        await dialog.ShowAsync();

        _isShown = false;
    }
}