WPF UserControl Runtime error: Unable to find path of the icon in UserControl

WPF UserControl Runtime error: Unable to find path of the icon in UserControl

在我的 WPF User Control 中,我添加了一个图标(显示在下面的 XAML 中)。但是在运行时,用户控件的以下代码中的InitializeComponent()调用给出了如下所示的错误:

UserControl1.xaml.cs

public partial class UserControl1 : System.Windows.Window
    {
        public UserControl1()
        {
            InitializeComponent();
        }
…………….
}

XAML 的用户控件(带图标):

<Window x:Class="MyProject.UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:MyProject"
             mc:Ignorable="d"
            "d:DesignHeight="450" d:DesignWidth="800"
             Icon="pack://siteoforigin:,,,/Resources/test_32.png">
    <Grid>
………………
    </Grid>

错误:

DirectoryNotFoundException: Could not find a part of the path 'C:\MyFolder\VSTO\MyProject\bin\Debug\Resources\MyIcon.png'.

备注:

我注意到 Resources 文件夹没有在 Debug 文件夹下创建,尽管它是项目的一部分。我已将 MyIcon.png 文件与 Build 操作设置为 Resource 并且 Copy to output directory 设置为 Copy if newer

我不明白为什么,但您应该将 application 与资源 Uri 一起使用,将 siteoforigin 与其余部分一起使用。

您可以将 Uri 更改为:

Icon="pack://application:,,,/Resources/test_32.png"

或者如果您想继续使用 siteoforigin 而不是将构建选项更改为 "content" 而不是 "Resource"。 相关主题:

What is application's site of origin and when to use it

pack-uris-in-wpf