С вызовом Toast-уведомлений пришлось поискать примеры.
Вот один из них. Здесь, чтобы всё заработало, приходится добавлять в Решение (Solution) ещё один проект — Windows Application Packaging Project.
- Начнём с дизайна:
MainWindow.xaml
<Window x:Class="WpfCallingWin10Api.Framework.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfCallingWin10Api.Framework" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800" FontSize="30"> <Grid> <Button Content="Show Toast" Padding="10" HorizontalAlignment="Center" VerticalAlignment="Center" Click="ButtonShowToast_Click"/> </Grid> </Window>
- Код кнопки здесь такой:
MainWindow.xaml.cs
using System; using System.Windows; using Windows.Data.Xml.Dom; using Windows.UI.Notifications; namespace WpfCallingWin10Api.Framework { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void ButtonShowToast_Click(object sender, RoutedEventArgs e) { string title = "The current time is"; string timeString = $"{DateTime.Now:HH:mm:ss}"; string thomasImage = "https://www.thomasclaudiushuber.com/thomas.jpg"; string toastXmlString = $@"<toast><visual> <binding template='ToastGeneric'> <text>{title}</text> <text>{timeString}</text> <image src='{thomasImage}'/> </binding> </visual></toast>"; var xmlDoc = new XmlDocument(); xmlDoc.LoadXml(toastXmlString); var toastNotification = new ToastNotification(xmlDoc); var toastNotifier = ToastNotificationManager.CreateToastNotifier(); toastNotifier.Show(toastNotification); } } }
В этом случае при запуске вылетает исключение:
Exception thrown: ‘System.Runtime.InteropServices.COMException’ in WinRT.Runtime.dll
An unhandled exception of type ‘System.Runtime.InteropServices.COMException’ occurred in WinRT.Runtime.dll
Element not found. (0x80070490)В идеале, для UWP-приложения назначается идентификатор, но у нас WPF-приложение и тут этого нет. Поэтому нам необходимо создать идентификатор вручную. Переходим к следующему пункту. - Запакуем наше приложение в MSIX:
▶ ▶ ▶
Progect name: WpfCallingWin10Api.Framework.App
Loacation: C:\Users\Denis\source\repos\WpfCallingWin10Api.Framework - Добавим ссылку на проект:
▶ ▶ ▶После того, как указали проект, нужно для него выбрать минимальную версию платформы:
Target version: Windows 10, version 1903 (10.0; Build 18362)
Minimum version: Windows 10, version 1903 (10.0; Build 18362)Если теперь его запустить, то при нажатии на кнопку, получим ошибку:
Exception thrown: ‘System.Exception’ in WpfCallingWin10Api.Framework.exe
An unhandled exception of type ‘System.Exception’ occurred in WpfCallingWin10Api.Framework.exe
Element not found. (Exception from HRESULT: 0x80070490) - Установим текущий проект как стартовый:
▶ ▶ ▶ ▶ ▶
После нажатия на кнопку в правом нижнем углу появится Toast-уведомление: