更改 WPF window 图标

Changing WPF window icons

我有一堆图标作为资源。设法更改 MainWindow 图标没有问题,但对其他人做同样的事情会给我这个错误:

Could not find a part of the path 'C:\Program Files (x86)\Microsoft Visual Studio19\Community\Common7\IDE\resources\add.ico'

我在 XAML 文件的顶部有这个:

Icon="resources/add.ico"

所以 - 由于某种原因,它在 MainWindow.xaml 中搜索资源文件夹中的资源,但在其他 window 中,它决定在 VS 文件夹中搜索(原因不明)。我该如何解决这个问题?

我建议您使用使用 WPF Pack-URI 的绝对路径。 这些帖子解释得很好:


https://docs.microsoft.com/en-us/previous-versions/dotnet/netframework-4.0/aa970069(v=vs.100)?redirectedfrom=MSDN

对你来说 pack://application:,,,/resources/add.ico

它的基本语法是pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml 如 MSDN 文章所述

如果您将在多个地方使用图像,那么值得将图像数据仅加载一次到内存中,然后在所有 Image 个元素之间共享。

为此,在某处创建一个 BitmapSource 作为资源:

<BitmapImage x:Key="MyImageSource" UriSource="../Media/Image.png" />

然后,在您的代码中,使用如下内容:

<Image Source="{StaticResource MyImageSource}" />

就我而言,我发现我必须将 Image.png 文件设置为具有 Resource 的构建操作,而不仅仅是 Content。这会导致图像在编译的程序集中携带。

有关详细信息,请查看 HERE