C# 在我的WPF应用程序中,图像中加载的PNG徽标在设计时显示,但在运行时不显示

C# 在我的WPF应用程序中,图像中加载的PNG徽标在设计时显示,但在运行时不显示,c#,wpf,C#,Wpf,这可能是我缺少的一些简单的东西。 我有一个png文件,我想在我的WPF窗口中用作*Image*控件的源。 我通过“项目属性”>“资源”>“添加现有文件”添加了这个PNG文件,首先作为链接文件添加(然后在不起作用时作为嵌入文件添加)。然后我将XAML文件中图像控件的*源*添加到此文件中。不涉及代码,只需单击即可 恼人的问题是,当我设计WPF窗口时,图像会显示出来。当我运行它时,它不会。什么也没有出现 更新:在下面添加了XAML代码 <Window x:Class="Server.MainWi

这可能是我缺少的一些简单的东西。 我有一个png文件,我想在我的WPF窗口中用作*Image*控件的源。 我通过“项目属性”>“资源”>“添加现有文件”添加了这个PNG文件,首先作为链接文件添加(然后在不起作用时作为嵌入文件添加)。然后我将XAML文件中图像控件的*源*添加到此文件中。不涉及代码,只需单击即可

恼人的问题是,当我设计WPF窗口时,图像会显示出来。当我运行它时,它不会。什么也没有出现

更新:在下面添加了XAML代码

<Window x:Class="Server.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="SERVER" Height="467.91" Width="620.522">

        <Grid>
        <Grid.Background>
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                <GradientStop Color="#FF080C59" Offset="0"/>
                <GradientStop Color="White" Offset="1"/>
            </LinearGradientBrush>
        </Grid.Background>
        <Button x:Name="btnConnect" Content="Connect" HorizontalAlignment="Left" Height="30" Margin="425,34,0,0" VerticalAlignment="Top" Width="134" Click="btnConnect_Click"/>
        <Button x:Name="btnDisconnect" Content="Disconnect" HorizontalAlignment="Left" Height="35" Margin="425,69,0,0" VerticalAlignment="Top" Width="134" Click="btnDisconnect_Click"/>
        <TextBlock x:Name="txtLog" HorizontalAlignment="Left" Margin="416,160,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Height="161" Width="87" Background="#FFFFF5F5" Text="LOG:"/>
        <TextBox x:Name="txtMsg" HorizontalAlignment="Left" Height="23" Margin="416,326,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="112"/>
        <Button x:Name="btnSend" Content="Send" HorizontalAlignment="Left" Height="35" Margin="425,120,0,0" VerticalAlignment="Top" Width="134" Click="btnSend_Click"/>
        <ListView x:Name="lsvClients" Height="67" Margin="46,212,260,0" VerticalAlignment="Top">
            <ListView.View>
                <GridView>
                    <GridViewColumn/>
                </GridView>
            </ListView.View>
        </ListView>
        <Image HorizontalAlignment="Left" Height="100" Margin="31,10,0,0" VerticalAlignment="Top" Width="101" Source="pack://siteoforigin:,,,/images/ServerMainLogo.png"/>

    </Grid>
</Window>

我错过了什么?
谢谢

siteOfOrigin
仅当您的文件复制到其他
可执行文件
(输出文件夹)所在的位置时才应使用。对于资源,您应该使用
应用程序

Source="pack://application:,,,/images/ServerMainLogo.png"

请参阅此链接以获得进一步的说明。

在XAML中指定图像URI时,通常不需要编写完整的URI。除了另一个答案中显示的完整包URI外,您还应该能够编写以下内容:

<Image ... Source="images/ServerMainLogo.png"/>

但是,您必须确保图像文件位于Visual Studio项目中名为
images
的文件夹中,并且其设置为
Resource
,如中所示

或者,您可以将构建操作设置为
Content
并复制到 将目录输出到
始终复制
复制(如果更新)
。在这种情况下,映像不会作为资源嵌入到程序的程序集中,而是简单地复制到相对于可执行文件的目录中

XAML中的(相对)图像URI在这两种情况下都有效。

  • 确保项目中的图像属性具有“生成操作”= “资源”,而不是“嵌入式资源”
  • 在xaml中,选中图像标记后,使用属性窗口选择源下拉列表,因为现在图像显示在下拉列表中!这让VisualStudio为我格式化字符串。字符串visual studio已格式化

    因为我的形象是:

    Source=”pack://application:,,,/FamilyExplorer;组件/资源/文件夹.png“/>


其中,
FamilyExplorer
是我的项目名称,
Resources/Folder.png
是图像的位置。

你能显示你的
XAML
代码吗?在你的输出文件夹中,你能检查一下
/images/ServerMainLogo.png
是否可用吗?@jacobaloyous不在那里,我刚刚检查了…@iAteABug_,并单击了它:尝试设置图像文件的属性
Copy to Output Directory
Copy Always
,Yayyyyyyy!它起作用了。我必须先将png复制到resources文件夹,然后再将其添加到resources中,然后它出现了。。。哎呀!不要将文件复制到其他文件夹!如果URI为
images/…
(不带前导斜杠),则文件必须位于名为“images”的文件夹中。仅此而已。我将PNG更改为嵌入式资源,设计器窗口可以使用它,运行时的应用程序不需要太多。@chrismaric它应该是资源,而不是嵌入式资源。