Как создать информативное уведомление о тостах в приложении UWP

В моем приложении я хочу сообщить пользователю, когда выполнено определенное действие, например, запись успешно обновлена ​​или добавлена ​​новая запись, но нет встроенного элемента управления, который может отображать такую ​​информацию. Есть ли что-то похожее на Android Toast.makeText для UWP?

Ответы на вопрос(2)

Вот как реализовать простой makeText, как Android:

    private Windows.UI.Xaml.Controls.Frame frame;
    private Windows.UI.Xaml.Controls.Page page;
    private Ribo.Smart.App.UserControls.Components.Common.Toast toast;

    private DispatcherTimer timer = new DispatcherTimer();
    void timer_Tick(object sender, object e)
    {
        if (toast != null)
            ((Panel)page.FindName("layoutRoot")).Children.Remove(toast);

        toast = null;

        timer.Stop();

        timer.Tick -= timer_Tick;
    }
    private void Frame_Navigated(object sender, Windows.UI.Xaml.Navigation.NavigationEventArgs e)
    {
        if (toast != null)
        {

            object layoutRoot = page.FindName("layoutRoot");

            if (layoutRoot != null)
            {
                ((Panel)layoutRoot).Children.Remove(toast);

                page = (Windows.UI.Xaml.Controls.Page)e.Content;

                layoutRoot = page.FindName("layoutRoot");

                ((Panel)layoutRoot).VerticalAlignment = VerticalAlignment.Stretch;

                ((Panel)layoutRoot).Children.Add(toast);

                if (layoutRoot is Grid)
                {
                    toast.SetValue(Grid.RowSpanProperty, 100);
                }
            }
        }
    }

    public void ShowMessage(string message)
    {

        frame = (Windows.UI.Xaml.Controls.Frame)Windows.UI.Xaml.Window.Current.Content;
        page = (Windows.UI.Xaml.Controls.Page)frame.Content;

        frame.Navigated -= Frame_Navigated;
        frame.Navigated += Frame_Navigated;

        toast = new Ribo.Smart.App.UserControls.Components.Common.Toast();
        toast.Message = message;
        toast.VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Bottom;
        toast.HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Center;

        int seconds = message.Length / 30;

        if (seconds < 2)
            seconds = 2;

        timer.Interval = new TimeSpan(0, 0, seconds);
        timer.Start();
        timer.Tick -= timer_Tick;
        timer.Tick += timer_Tick;

        object layoutRoot = page.FindName("layoutRoot");

        if (layoutRoot != null)
        {
            if (layoutRoot is Grid)
            {
                toast.SetValue(Grid.RowSpanProperty, 100);
            }

            ((Panel)layoutRoot).Children.Add(toast);
        }

    }
Решение Вопроса

Да, в UWP есть тост-уведомления :)

Вот пример кода для отображения простого уведомления:

private void ShowToastNotification(string title, string stringContent)
{
        ToastNotifier ToastNotifier = ToastNotificationManager.CreateToastNotifier();
        Windows.Data.Xml.Dom.XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText02);
        Windows.Data.Xml.Dom.XmlNodeList toastNodeList = toastXml.GetElementsByTagName("text");
        toastNodeList.Item(0).AppendChild(toastXml.CreateTextNode(title));
        toastNodeList.Item(1).AppendChild(toastXml.CreateTextNode(stringContent));
        Windows.Data.Xml.Dom.IXmlNode toastNode = toastXml.SelectSingleNode("/toast");
        Windows.Data.Xml.Dom.XmlElement audio = toastXml.CreateElement("audio");
        audio.SetAttribute("src", "ms-winsoundevent:Notification.SMS");

        ToastNotification toast = new ToastNotification(toastXml);
        toast.ExpirationTime = DateTime.Now.AddSeconds(4);
        ToastNotifier.Show(toast);
}

В этой статье вы можете найти, как настроить его:

https://docs.microsoft.com/en-us/windows/uwp/controls-and-patterns/tiles-and-notifications-adaptive-interactive-toasts

 Zea Shah31 мая 2016 г., 13:21
Спасибо, попробую это.
 Daniel Krzyczkowski19 авг. 2019 г., 07:02
Вы можете отключить push-уведомления в «Меню уведомлений и действий». Вы можете решить, для каких уведомлений приложения должны быть отключены:i.ibb.co/5xYyrs0/Notifications-UWP.png
 Daniel Krzyczkowski06 сент. 2017 г., 12:04
Это должно быть показано на правой стороне экрана, когда на рабочем столе и сверху для мобильных устройств.
 Daniel Krzyczkowski31 мая 2016 г., 13:14
Я отредактировал свой ответ.
 pixel30 авг. 2017 г., 01:46
Где это должно показать? Я скопировал метод позади события нажатия кнопки, и я не вижу никаких уведомлений? Спасибо
 Daniel Krzyczkowski23 авг. 2016 г., 04:51
@Speednet спасибо
 Seaky Lone18 авг. 2019 г., 09:55
Как отключить уведомление?
 Daniel Krzyczkowski31 мая 2016 г., 13:26
Конечно, пожалуйста, дайте мне знать результат.
 Zea Shah31 мая 2016 г., 13:09
Но это не информативное уведомление о тостах, если пользователь игнорирует его, то оно попадает в центр уведомлений, чего я не хочу.
 Daniel Krzyczkowski31 мая 2016 г., 13:12
Ниже строки добавьте: toast.ExpirationTime = DateTime.Now.AddSeconds (4); Это будет показывать уведомление в течение 4 секунд, а затем исчезнет и из Центра поддержки.
 Speednet23 авг. 2016 г., 01:25
Я вижу, вы не получили ответа, так что я просто скажу, что он отлично работает, спасибо.

Ваш ответ на вопрос