【问题标题】:WPF Icon for all app windows所有应用程序窗口的 WPF 图标
【发布时间】:2010-12-25 07:01:06
【问题描述】:

可以设置一个图标,以便在当前应用程序的每个窗口中使用它。这样我就设置了一次(不是在每个窗口上手动设置)..?

【问题讨论】:

    标签: wpf icons window


    【解决方案1】:

    MSDN 是关于该主题的一个很好的参考。声明您有一个应用程序图标(桌面图标),每个窗口都有一个图标。

    WPF 窗口总是显示一个图标。当设置 Icon 没有提供时,WPF 会根据以下规则选择一个图标来显示:

    1. 使用程序集图标(如果指定)。

    2. 如果未指定程序集图标,则使用默认的 Microsoft Windows 图标。

    社区内容参考:

    “一个小提示:如果您设置了应用程序图标并希望在窗口中看到它 - 如果在 VS 的调试中运行,它将不会显示。在外部运行或不附加 (ctrl + f5) 时,图标会按预期显示。 "

    【讨论】:

    • 需要注意的一点(在您引用的 MSDN 文章的“社区内容”部分中提到)是,当您在调试模式下运行时,该应用程序仍默认为默认的 Windows 图标来自 Visual Studio。这可能在 VS 2010 中已修复,但我尚未检查。如果您在调试时没有看到您的图标,请不要太困惑!
    • John 告诉你如何设置装配图标。它位于“应用程序”选项卡上。您可能在调试模式下运行它,它仍然会在调试中显示 Windows 默认图标。从您的 bin 文件夹构建并运行可执行文件。您应该会在所有 Windows 上看到应用图标。
    • @tm1 我认为这是 VS2010(2012 年?)中的错误,因为它已在 2013 年修复。
    • @tm1,我无法确认它在 VS2013 中是否已修复。刚刚遇到了同样的问题,同样的解决方法有所帮助。
    • @ChrisMarisic - 回复:why wouldn't it show the icon when running in debug?正在显示正在运行的程序的图标。但是在调试时,它运行的程序名为“vshost.exe”,其中包含默认图标。然后 vshost 在它的调试环境中运行你的程序。如果你想把它当作一个bug,那么这个bug就是vshost没有反映程序开始调试的图标。
    【解决方案2】:

    在“资源”部分的“应用程序”选项卡的项目属性中设置图标。此图标将成为应用程序中所有窗口的默认图标。

    【讨论】:

    • 它对我不起作用,我仍然看到默认图标。我按照你说的设置了新图标。
    • 当您在调试模式下运行时,您将看不到您的应用程序图标。需要在Release模式下运行或者“不调试就启动”(Ctrl+F5)
    • 很棒的提示——这对我来说也适用于“固定”图标的问题。甜!
    • 很高兴知道.....:) 我不明白该图标发生了什么以及如何将其设置为所有窗口,但是当我在“不调试启动”中运行时工作...:)
    • @John 我在 VS 2015 中设置了图标,但它仍然不适合我,在 Release 和 Debug 中都没有,在没有 Debuggin 的情况下启动
    【解决方案3】:

    在 VS2010 下打开主应用程序可执行文件的属性并打开应用程序选项卡。在“资源”部分的“图标和清单”下设置图标。

    要在 VS2010 下调试时查看图标,您需要打开“调试”选项卡并取消选中“启用 Visual Studio 托管进程”选项,否则您将只能在大多数窗口上看到默认图标。

    我假设图标加载代码被托管进程弄糊涂了,并且正在寻找“someapplication.vshost.exe”而不是“someapplication.exe”的图标。

    这看起来在 VS2013 中已修复。

    【讨论】:

    • 不幸的是,它在 VS2013 中没有修复。顺便说一句,我也认为它与在 vshosts.exe 进程中运行的调试者有关
    • 回复:why it doesn't show the icon when running in debug?显示正在运行的程序的图标。但是在调试时,它运行的程序名为“vshost.exe”,其中包含默认图标。然后 vshost 在它的内部调试环境中运行你的程序。如果你想把它当作一个bug,那么这个bug就是vshost没有反映程序的图标开始调试了。
    【解决方案4】:

    “启用 Visual Studio 宿主进程”使图标不起作用的原因是它是使用 vshost.exe 启动的,因此无法正确读取清单。 如果清单中有其他内容,例如 regfree ocx 控件等需要清单加载,情况也是如此。

    【讨论】:

      【解决方案5】:

      你也可以试试这个来设置自己的图标:

      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);
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多