首页 > 解决方案 > WPF UserControl 运行时错误:无法在 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:找不到路径“C:\MyFolder\VSTO\MyProject\bin\Debug\Resources\MyIcon.png”的一部分。

备注

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

标签: c#wpfwpf-controls

解决方案


我不知道为什么,但您应该使用application资源 Uri 和siteoforigin其他资源。

您可以将 Uri 更改为:

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

或者,如果您想继续使用siteoforigin而不是将构建选项更改为“内容”而不是“资源”。相关话题:

什么是应用程序的原始站点以及何时使用它

打包 uris-in-wpf


推荐阅读