MessageBox显示一次

时间:2015-01-02 18:31:53

标签: c# xaml windows-phone-8

我想知道是否有办法在WP8中只显示一次消息框,即在应用程序打开时。

我已经拥有以下代码,非常基本。

protected override void OnNavigatedTo(NavigationEventArgs e)
{
  base.OnNavigatedTo(e);
  MessageBox.Show("Hi");
}

但是,这会在每次打开应用时显示。我只希望它第一次出现。

这可能吗?

2 个答案:

答案 0 :(得分:0)

由于您需要跨会话保持状态,因此isolated storage键值对是一个不错的选择。只需检查一下,然后更新:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
  base.OnNavigatedTo(e);
  var settings = IsolatedStorageSettings.ApplicationSettings;
  if (settings.ContainsKey("messageShown") && (bool)settings["messageShown"] == true)      
  {
    MessageBox.Show("Hi");
    settings["messageShown"] = true;
  }
}

答案 1 :(得分:0)

我在WP 8.0 Silverlight应用程序中成功使用了它。创建一个可重用的类OneTimeDialog:

using System.Windows;
using System.IO.IsolatedStorage;

namespace MyApp
{
    public static class OneTimeDialog
    {
        private static readonly IsolatedStorageSettings _settings = IsolatedStorageSettings.ApplicationSettings;

        public static void Show(string uniqueKey, string title, string message)
        {
            if (_settings.Contains(uniqueKey)) return;

            MessageBox.Show(message, title, MessageBoxButton.OK);

            _settings.Add(uniqueKey, true);
            _settings.Save();
        }
    }
}

然后在您的应用中的任意位置使用它,如下所示:

OneTimeDialog.Show("WelcomeDialog", "Welcome", "Welcome to my app! You'll only see this once.")

只显示一次“提示”或“欢迎”对话框对很多不同类型的应用程序很有帮助,所以我实际上在可移植类库中有上面的代码,所以我可以从多个项目中引用它。