winforms 图像未显示在ToastNotification中

qkf9rpyu  于 2023-10-23  发布在  其他
关注(0)|答案(1)|浏览(96)

我正在构建一个通知服务,当我试图在其中显示任何类型的图像时,我目前面临一个问题。
我使用Microsoft.Toolkit.Uwp.Notifications,下面是我用来显示构建和显示通知的代码。

static class NotificationTemplate
{
    public static ToastContentBuilder HelpDesk(string main_payload, string additional_data, string type)
    {
        return new ToastContentBuilder()
                  .AddArgument("type", "helpdesk")
                  .AddArgument("select", main_payload)
                  .AddText("Incoming ticket", AdaptiveTextStyle.Title)
                  .AddText(type, AdaptiveTextStyle.Header)
                  .AddAttributionText(additional_data)
                  .AddAppLogoOverride(new Uri("https://cdn4.iconfinder.com/data/icons/the-weather-is-nice-today/64/weather_11-64.png"))
                  .AddButton(new ToastButton()
                      .AddArgument("take", main_payload)
                      .SetContent("TAKE"))
                  .AddButton(new ToastButton()
                      .AddArgument("close", main_payload)
                      .SetContent("CLOSE"));
    }

}

我在Uri中使用的图像是有效的(测试链接,而不是实际的东西),并在浏览器中打开链接时显示。下面是所示通知的屏幕截图:

我正在运行Windows 10 build 19045.3324

eimct9ow

eimct9ow1#

docs中明确提到:

重要

只有在清单中具有互联网功能的打包应用程序中才支持Http图像。未打包的应用程序不支持http图像;你必须下载图像到你的本地应用程序数据,并在本地引用它。
正如你提到的,你没有使用打包的应用程序,那么你必须自己下载镜像,无论是在设计时还是运行时。
您可以下载它并将其添加到解决方案中,然后将其复制到输出目录中,也可以下载它并在运行时使用它。举例来说:

static WebClient client = new WebClient();
private async void button1_Click(object sender, EventArgs e)
{
    var fileName = Path.Combine(Application.StartupPath, "Logo.jpg");
    if(!File.Exists(fileName))
    {
        var address = "https://picsum.photos/360/202?image=883";
        await client.DownloadFileTaskAsync(new Uri(address), fileName);
    }
    ToastContentBuilder builder = new ToastContentBuilder()
        .AddText("Lorem Ipsum!")
        .AddText("Lorem ipsum dolor sit amet, consectetur adipiscing elit.")
        .AddAppLogoOverride(new Uri(fileName));
    builder.Show();
}

**注意:**不是本问答关注的问题,但要下载文件,建议使用HttpClient。看看this example

如文档中所述,对于打包的应用程序,如果启用了互联网访问,则不需要下载图像,可以使用图像URL。要了解更多信息,请查看以下资源:

是的,这两种解决方案(对于打包的应用程序不下载,对于非打包的应用程序下载)也可以在调试模式下工作。

相关问题