我已经在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.png"),
JumpListItemType.Help => Path.GetFullPath(@"Assets\Icons\JumpList\Help.png"),
JumpListItemType.Quit => Path.GetFullPath(@"Assets\Icons\JumpList\Quit.png"),
JumpListItemType.Settings => Path.GetFullPath(@"Assets\Icons\JumpList\Settings.png"),
JumpListItemType.Sign_Out => Path.GetFullPath(@"Assets\Icons\JumpList\Sign_Out.png"),
_ => null!
};
}
所有.png文件都将输出到预期的目录,
我正在为这些文件使用以下属性:
**建置动作:**内嵌资源 (我也尝试过内容)
**复制到输出目录:**如果较新则复制
1条答案
按热度按时间jk9hmnmh1#
JumpTask.IconResourcePath
的文档声明(强调为mine):https://learn.microsoft.com/en-us/dotnet/api/system.windows.shell.jumptask.iconresourcepath
包含图标的资源的路径。默认值为
null
。[...]与
JumpTask
一起使用的图标必须作为本机资源可用。因此,您不能为JumpList图标指定PNG文件的路径-这是有意义的,因为Win32图标支持多种大小(例如高DPI、大图标等)而不是单个图像-您不能对PNG文件执行此操作。
.dll
文件:此QA包含有关如何将多个.ico
文件添加为本机ICON
/ICONDIRECTORY
资源的说明:Adding multiple Icons (Win32-Resource) to .NET-Application-请注意,C#编译器的-win32icon
选项只允许您指定一个图标(作为.exe
文件的 * 应用程序图标 *),这使得它无法用于此目的。别忘了确保包含16 x16、24 x24和32 x32的合适图标插图,以确保跳转列表项目在非96 dpi显示器上看起来可接受。
另请注意,Win32 * 原生资源 * 是与.NET
.resources
/.resx
完全不同的概念,也与WPF/XAML<ResourceDictionary>
对象分开。