В течение нескольких дней я сталкиваюсь со следующей проблемой:
Допустим, у меня есть форма тоста в xml в моем настольном приложении:
<toast>
<visual>
<binding template="ToastImageAndText04">
<image id="1" src=""/>
<text id="2">Line 1</text>
<text id="3">Line 2</text>
</binding>
</visual>
</toast>
, и я хотел бы чтобы отобразить внутри этого тоста какое-то изображение, встроенное в приложение (я хочу иметь возможность доставить его в одном пакете вместе с приложением).
Как я могу это сделать?
Я пробовал используя CallingAssembly, однако он дает мне поток файлов, а не путь. Я также попытался преобразовать свое изображение в base64, но это вызвало исключение из-за «слишком большого содержания тостов». Любые подсказки?
Редактировать: Добавление моего метода тоста + пример вызова:
public void Toast(string message, string toastTemplatePath)
{
var callingAssembly = Assembly.GetCallingAssembly();
System.IO.Stream file = callingAssembly.GetManifestResourceStream(toastTemplatePath);
StreamReader sr = new StreamReader(file);
XmlDocument toastXml = new XmlDocument();
toastXml.LoadXml(sr.ReadToEnd());
var text = toastXml.GetElementsByTagName("text")[0];
text.AppendChild(toastXml.CreateTextNode(message));
ToastNotification toast = new ToastNotification(toastXml);
ToastNotificationManager.CreateToastNotifier("App.ProjectName").Show(toast);
}
Пример вызова:
_toaster.Toast("Message", "ProjectName.Toaster.Xml.ToastNewDriveDetected.xml");