Я пытаюсь показать Windows 10 (UWP) ToastNotification
с адаптивным контентом из проекта WinForms. У меня уже есть:
- Установить
TargetPlatformVersion
в моем файле .csproj на 10.0.18362.0 - Добавлены ссылки на
Windows.winmd
и System.Runtime.dll
- Установитьявный System.AppUserModel.ID (
"Demo.ToastApp"
) с использованием функции Win32 SetCurrentProcessExplicitAppUserModelID
(в самом начале моего Main
метода)
Следующий код запускается, когда кнопка в форменажал:
XElement element = new XElement("toast",
new XElement("visual",
new XElement("binding",
new XAttribute("template", "ToastGeneric"),
new XElement("text", "Line1"),
new XElement("text", "Line2"),
new XElement("text", "Line3")
)
),
new XElement("actions",
new XElement("action",
new XAttribute("content", "Button1"),
new XAttribute("arguments", "action=Button1")
),
new XElement("action",
new XAttribute("content", "Button2"),
new XAttribute("arguments", "action=Button2")
)
)
);
var xml = new Windows.Data.Xml.Dom.XmlDocument();
xml.LoadXml(element.ToString());
var toast = new ToastNotification(xml);
ToastNotificationManager.CreateToastNotifier("Demo.ToastApp").Show(toast);
Уведомление не появляется. Не генерируется никаких исключений, и событие Failed
не запускается.
Однако, если я изменяю XML на следующий (то есть использую устаревший шаблон тоста), уведомление работает:
XElement element = new XElement("toast",
new XElement("visual",
new XElement("binding",
new XAttribute("template", "ToastText04"),
new XElement("text", new XAttribute("id", 1), "Line1"),
new XElement("text", new XAttribute("id", 2), "Line2"),
new XElement("text", new XAttribute("id", 3), "Line3")
)
)
);
Это противоречит тому, что я прочитал о тостах (см. Уведомления о тостах из настольных приложений ), в которых говорится, что следует использовать only ToastGeneric
и что унаследованные шаблоны (такие какToastText04
) нельзя использовать из настольных приложений.
Мне нужен адаптивный контент (в частности, действия, поэтому мое приложение может реагировать по-разному в зависимости от того, на каком из них нажали), и я не вижу, что я делаю неправильно,Может ли кто-нибудь указать мне правильное направление?
(Примечание: я хочу не устанавливать мой System.AppUserModel.ID в ярлык, потому что эта функция в конечном итоге будет находиться в библиотеке классов, и я хочу, чтобы она работала независимо от того,о том, как установлено вызывающее приложение)