可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
In my application I want to notify the user with the ShellToast
.
Just by running...
var toast = new ShellToast { Title = "Nom nom nom!", Content = "More! More! Keep feeding me!", }; toast.Show();
...makes nothing happen, and as I understand it needs to be run from a ScheduledTaskAgent
. But how do I run this on command, and make sure it only run once?
回答1:
You can't use a ShellToast while the app is the foreground app. It's meant to be invoked from a background service while the app isn't the foreground app.
If you want to have a UX similar to that of ShellToast use the Coding4fun toolkit ToastPrompt control. Here's a code snippet showing how to use it:
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)) }; }
Running this code snippet shows the following:

回答2:
Just a small update: using ShellToast
when the app is in foreground, is now possible, when using Windows Phone 8 Update 3. Though, they are obscured by other activity such as a phone call or the lock screen. Source