如何在 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 后面的代码中设置窗口图标?的主要内容,如果未能解决你的问题,请参考以下文章
WPF:一旦我在代码中设置了一个属性,它就会永远忽略 XAML 绑定......我该如何防止这种情况发生?