如何在 wpf 后面的代码中设置窗口图标?

Posted

技术标签:

【中文标题】如何在 wpf 后面的代码中设置窗口图标?【英文标题】:How to set window icon in code behind in wpf? 【发布时间】:2012-01-05 11:00:41 【问题描述】:

在 xaml 中是:

  <View:BaseWindow.Icon>
    /VBDAdvertisement;component/Images/logoVBD.png
  </View:BaseWindow.Icon>

我想把它转换成后面的代码。

谢谢

【问题讨论】:

这能回答你的问题吗? How to change title bar image in WPF Window? 【参考方案1】:

有点像

myWindow.Icon = new BitmapImage(new Uri("/VBDAdvertisement;component/Images/logoVBD.png"));

您可能需要更多地限定路径。

编辑:我认为路径应该是pack-uri 格式:

"pack://application:,,,/VBDAdvertisement;component/Images/logoVBD.png"

【讨论】:

是的,它是:myWindow.Icon = new BitmapImage(new Uri("pack://application:,,,/VBDAdvertisement;component/Images/logoVBD.png"));谢谢:) 为了避免丑陋的“pack...”字符串,请查看***.com/questions/1127647/…【参考方案2】:

这是正确的做法(假设 MyIcon.ico 位于名为 MyApplication 的 WPF 项目的根文件夹中):

Uri iconUri = new Uri("pack://application:,,,/MyApplication;component/MyIcon.ico");
myWindow.Icon = BitmapFrame.Create(iconUri);

这也是在 XAML 中为窗口设置 Icon 属性时实际发生的情况。

当只是将图标设置为一个新的位图时,它不会被平滑正确地渲染,而是有点像素化。

【讨论】:

【参考方案3】:

试试这个,它绝对适用于 png 和 ico 图像格式。

window.Icon = BitmapFrame.Create(Application.GetResourceStream(new Uri("LiveJewel.png", UriKind.RelativeOrAbsolute)).Stream);

【讨论】:

以上是关于如何在 wpf 后面的代码中设置窗口图标?的主要内容,如果未能解决你的问题,请参考以下文章

在 Avalonia 中设置窗口图标

WPF:一旦我在代码中设置了一个属性,它就会永远忽略 XAML 绑定......我该如何防止这种情况发生?

WPF打开PPT文件,怎么让其PPT的幻灯片窗口一直处于最前端,但是可以操作其他东西!

如何在选择中设置菜单图标向下的语言之间的距离?

如何在 Xcode 中设置 Mac 应用程序的图标?

C#WPF如何在由数据模板中的对象列表组成的列表框中设置项目[重复]