10

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

恼人的问题是,当我设计 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>

我错过了什么?谢谢

4

3 回答 3

12

在 XAML 中指定图像 URI 时,通常不需要编写完整的 URI。除了其他答案中显示的完整包 URI 之外,您还应该能够编写以下代码:

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

但是,您必须确保图像文件位于imagesVisual Studio 项目中命名的文件夹中,并且其Build Action设置为Resource,如本答案所示。

或者,您可以将Build Action设置为Content并将Copy To Output Directory设置为Copy alwaysCopy if newer。在这种情况下,图像不会作为资源嵌入到程序的程序集中,而只是复制到与可执行文件相关的目录中。

XAML 中的(相对)图像 URI 在这两种情况下都可以使用。

于 2013-03-27T06:58:45.960 回答
4

siteOfOrigin仅当您的文件被复制到您的其他executables(输出文件夹)所在的位置时才应使用。对于资源,您应该application改用。

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

有关进一步说明Pack URIs的信息,请参阅此链接。

于 2013-03-27T06:45:06.820 回答
1
  • 确保项目中的图像属性具有“构建操作”=“资源”,而不是“嵌入式资源”
  • 在 xaml 中,选择图像标记后,使用属性窗口选择源下拉列表,因为现在图像出现在下拉列表中!这让 Visual Studio 为我格式化了字符串。字符串视觉工作室格式化

    我的形象是:

    Source="pack://application:,,,/FamilyExplorer;component/Resources/Folder.png"/>

FamilyExplorer我的项目名称在哪里,Resources/Folder.png是图像的位置。

于 2017-10-12T07:34:55.083 回答