【发布时间】:2010-12-25 07:01:06
【问题描述】:
可以设置一个图标,以便在当前应用程序的每个窗口中使用它。这样我就设置了一次(不是在每个窗口上手动设置)..?
【问题讨论】:
可以设置一个图标,以便在当前应用程序的每个窗口中使用它。这样我就设置了一次(不是在每个窗口上手动设置)..?
【问题讨论】:
MSDN 是关于该主题的一个很好的参考。声明您有一个应用程序图标(桌面图标),每个窗口都有一个图标。
WPF 窗口总是显示一个图标。当设置 Icon 没有提供时,WPF 会根据以下规则选择一个图标来显示:
使用程序集图标(如果指定)。
如果未指定程序集图标,则使用默认的 Microsoft Windows 图标。
社区内容参考:
“一个小提示:如果您设置了应用程序图标并希望在窗口中看到它 - 如果在 VS 的调试中运行,它将不会显示。在外部运行或不附加 (ctrl + f5) 时,图标会按预期显示。 "
【讨论】:
why wouldn't it show the icon when running in debug? 它正在显示正在运行的程序的图标。但是在调试时,它运行的程序名为“vshost.exe”,其中包含默认图标。然后 vshost 在它的调试环境中运行你的程序。如果你想把它当作一个bug,那么这个bug就是vshost没有反映程序开始调试的图标。
在“资源”部分的“应用程序”选项卡的项目属性中设置图标。此图标将成为应用程序中所有窗口的默认图标。
【讨论】:
在 VS2010 下打开主应用程序可执行文件的属性并打开应用程序选项卡。在“资源”部分的“图标和清单”下设置图标。
要在 VS2010 下调试时查看图标,您需要打开“调试”选项卡并取消选中“启用 Visual Studio 托管进程”选项,否则您将只能在大多数窗口上看到默认图标。
我假设图标加载代码被托管进程弄糊涂了,并且正在寻找“someapplication.vshost.exe”而不是“someapplication.exe”的图标。
这看起来在 VS2013 中已修复。
【讨论】:
why it doesn't show the icon when running in debug? 它是显示正在运行的程序的图标。但是在调试时,它运行的程序名为“vshost.exe”,其中包含默认图标。然后 vshost 在它的内部调试环境中运行你的程序。如果你想把它当作一个bug,那么这个bug就是vshost没有反映程序的图标开始调试了。
“启用 Visual Studio 宿主进程”使图标不起作用的原因是它是使用 vshost.exe 启动的,因此无法正确读取清单。 如果清单中有其他内容,例如 regfree ocx 控件等需要清单加载,情况也是如此。
【讨论】:
你也可以试试这个来设置自己的图标:
private void Page_Loaded_1(object sender, RoutedEventArgs e)
{
Uri iconUri = new Uri(@"C:\Apps\R&D\WPFNavigation\WPFNavigation\Images\airport.ico", UriKind.RelativeOrAbsolute);
(this.Parent as Window).Icon = BitmapFrame.Create(iconUri);
}
【讨论】: