簡體   English   中英

WPF JumpList 圖標未填充

[英]WPF JumpList Icon not populating

我在我的 WPF 應用程序中設置了一個 JumpList。

除了不顯示圖標外,JumpList 功能齊全,這是我在任務欄中看到的:

在此處輸入圖像描述

這是我必須創建 JumpTask 的代碼:

using System.Windows.Shell;

public JumpTask BuildJumpTask
{
    get
    {
        return new JumpTask
        {
            Arguments = Argument,
            ApplicationPath = Assembly.GetEntryAssembly()?.Location,
            Description = GenerateDescription(),
            IconResourcePath = GetIconPath(),
            Title = Name
        };
    }
}

Private string GetIconPath()
{
    return Type switch
    {
        JumpListItemType.About => Path.GetFullPath(@"Assets\Icons\JumpList\About.ico"),
        JumpListItemType.Help => Path.GetFullPath(@"Assets\Icons\JumpList\Help.ico"),
        JumpListItemType.Quit => Path.GetFullPath(@"Assets\Icons\JumpList\Quit.ico"),
        JumpListItemType.Settings => Path.GetFullPath(@"Assets\Icons\JumpList\Settings.ico"),
        JumpListItemType.Sign_Out => Path.GetFullPath(@"Assets\Icons\JumpList\Sign_Out.ico"),
            _ => null!
    };
}

All.ico 文件正在 output 到預期目錄,

我正在為它們的文件使用以下屬性:

構建操作:嵌入式資源(我也嘗試過內容)

復制到 Output 目錄:如果較新則復制

JumpTask.IconResourcePath的文檔指出(強調我的):

https://learn.microsoft.com/en-us/do.net/api/system.windows.shell.jumptask.iconresourcepath

包含圖標的資源的路徑。 默認值為null
[...] 與JumpTask一起使用的圖標必須作為本地資源提供

因此,您不能為 JumpList 圖標指定 PNG 文件的路徑——這是有道理的,因為 Win32 圖標支持多種尺寸(例如高 DPI、大圖標等)而不是單個圖像——您不能使用 PNG 文件來做到這一點。

幸運的是,您不需要啟動 VisualC++ 來構建一個包含少量圖標的.dll文件:此 QA 有關於如何將多個.ico文件添加為本機ICON / ICONDIRECTORY資源的說明: 添加多個圖標(Win32-Resource ) 到 .NET-Application - 請注意,C# 編譯器-win32icon選項僅允許您指定單個圖標(作為.exe文件的應用程序圖標),使其無法用於此目的。

不要忘記確保包含 16x16、24x24 和 32x32 的合適圖標插圖,以確保您的跳轉列表項目在非 96dpi 顯示器上看起來可以接受。

另請注意,Win32本機資源是與 .NET .resources / .resx完全不同的概念 - 並且也與 WPF/XAML <ResourceDictionary>對象分開。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM