2012-12-20 92 views
7

在我的應用程序中,我想通知用戶ShellToast如何創建一個shelltoast?

只需通過運行...

var toast = new ShellToast 
{ 
    Title = "Nom nom nom!", 
    Content = "More! More! Keep feeding me!", 
}; 
toast.Show(); 

...使得沒有發生,而且我的理解它需要從ScheduledTaskAgent運行。但是,如何在命令中運行這個命令,並確保它只運行一次?

回答

24

當應用程序是前臺應用程序時,您無法使用ShellToast。它意味着從後臺服務調用,而應用程序不是前臺應用程序。

如果您希望有一個與ShellToast類似的UX,請使用Coding4fun toolkit ToastPrompt控件。下面是展示如何使用它的代碼片段:

private void ToastWrapWithImgAndTitleClick(object sender, RoutedEventArgs e) 
    { 
     var toast = GetToastWithImgAndTitle(); 
     toast.TextWrapping = TextWrapping.Wrap; 

     toast.Show(); 
    } 

    private static ToastPrompt GetToastWithImgAndTitle() 
    { 
     return new ToastPrompt 
     { 
      Title = "With Image", 
      TextOrientation = System.Windows.Controls.Orientation.Vertical, 
      Message = LongText, 
      ImageSource = new BitmapImage(new Uri("../../ApplicationIcon.png", UriKind.RelativeOrAbsolute)) 
     }; 
    } 

運行這段代碼片段顯示如下:

ToastPrompt control with image

+0

嗨。我正在嘗試這個代碼。它給無效的交叉線程訪問錯誤。我該如何解決它 – PratPor

+0

你必須在主線程中運行代碼。 – Hyndrix

0

只是一個小更新:使用ShellToast當應用程序在前臺,是現在使用Windows Phone 8 Update 3時可能會出現這種情況。儘管如此,它們被其他活動遮擋,例如電話或鎖定屏幕。 Source

+0

我認爲你看錯了,「目標應用程序在前臺運行時會顯示Toast通知,但被其他活動(如電話或鎖定屏幕)遮擋」。 – holmis83