2015-01-02 178 views
0

我想知道是否有方法在WP8中顯示一個消息框,即在應用程序打開時。MessageBox顯示一次

我已經有以下代碼,非常基本。

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

但是,這顯示每次打開應用程序。我只想讓它第一次顯示。

這可能嗎?

+0

如果你已經顯示了消息框,你可以記得在布爾中。或者使用將對象添加到可視化樹時發生的Loaded事件。 –

回答

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.") 

顯示一個「提示」或「歡迎」對話框中只有一次是在許多不同的有所幫助類型的應用程序,所以我實際上在便攜式類庫中有上面的代碼,所以我可以從多個項目中引用它。

+0

謝謝布拉德,工作過很愉快! –

+0

有沒有方法來格式化文本框的文本佈局,即段落/項目符號點等? –

+0

不像你現在這樣做,但看看這個nuget包中的CustomMessageBox類:https://www.nuget.org/packages/WPtoolkit。它提供了更多的選擇,如果它能支持這種行爲,我不會感到驚訝。 – Brad

1

由於您需要在會話中保持一個狀態,所以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; 
    } 
} 
+0

感謝您的幫助。但是,我試過這個代碼,ContainsKey返回以下錯誤:'System.IO.IsolatedStorage.IsolatedStorageSettings'不包含'ContainsKey'的定義,也沒有接受'System.IO.IsolatedStorage'類型的第一個參數的擴展方法'ContainsKey' .IsolatedStorageSettings'可以找到(你是否缺少使用指令或程序集引用?) –

+0

我試圖使用'Contains',代碼運行但沒有顯示消息框。 –

+0

如果有幫助,我使用的是Silverlight WP8.0應用程序。 –