如何创建一个Shelltoast?

7
在我的应用程序中,我想使用ShellToast来通知用户。
只需运行...
var toast = new ShellToast
{
    Title = "Nom nom nom!",
    Content = "More! More! Keep feeding me!",
};
toast.Show();

...这段代码并没有执行任何操作,据我所知它需要从ScheduledTaskAgent中运行。但是如何在命令中运行它,并确保它只运行一次呢?

2个回答

24

当应用程序处于前台时,无法使用 ShellToast。它的使用场景是在应用程序不处于前台时从后台服务中调用。

如果您想要类似 ShellToast 的用户体验,请使用Coding4fun 工具包中的 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控件


嗨,我正在尝试这段代码。它给出了无效的跨线程访问错误。我该如何修复它? - pratpor

0

小小的更新:在使用Windows Phone 8 Update 3时,使用ShellToast在应用程序前台是可能的。不过,它们会被其他活动(如电话呼叫或锁屏)所遮挡。来源


我认为你误读了,"当目标应用程序在前台运行但被其他活动(如电话呼叫或锁定屏幕)遮挡时,会显示 toast 通知。" - holmis83

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接