62

总而言之,我有一个小型应用程序的以下开始,它检查 .resx 文件的嵌入括号的一致性(这样就不会发生不匹配的“... {0}”字符串的运行时错误)。我有 MainWindow.xaml 的以下 XAML,我的特殊问题与要在按钮上显示的图像有关

<Window x:Class="ResxChecker.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="174.383" Width="495.869">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="350*"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="30*"/>
        </Grid.RowDefinitions>
        <Label Content="Select .resx file:" HorizontalAlignment="Left" Margin="10,0,0,0" VerticalAlignment="Top" Height="24" Width="Auto" Grid.ColumnSpan="1"/>
        <TextBox Grid.ColumnSpan="2" HorizontalAlignment="Stretch" Margin="10,0,0,0" Grid.Row="1" TextWrapping="Wrap" Text="" VerticalAlignment="Top"/>
        <Button Grid.Column="2" HorizontalAlignment="Right" Margin="5,0,10,0" Grid.Row="1">
            <Image VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Height="16 " Width="16" Source="pack://siteoforigin:,,,/Resources/UserCost2013Open16.png"/>
        </Button>
    </Grid>
</Window>

该图像具有“构建操作 = 资源”、“复制到输出目录 = 不复制” - 图像在设计器中显示,但在运行时不显示。我已经看到以下问题并阅读了相关答案,但没有解决问题:

  1. 应用程序使用时不显示 WPF 控件图像

  2. wpf中的图像问题(图像不显示)

  3. 按钮的背景图像未显示在 WPF 中

如何让按钮图像在运行时出现?

4

10 回答 10

82

将构建操作更改为“资源”。你的包网址也是错误的。要么使用:

Source="pack://application:,,,/Resource/UserCost2013Open16.png"

或者干脆

Source="/Resource/UserCost2013Open16.png"
于 2013-03-26T12:12:53.397 回答
29

有2个解决方案:

1:更改图像的设置:

Build Action = Content
Copy to output directory = Copy if newer
Source="pack://siteoforigin:,,,/Resources/UserCost2013Open16.png"


2:在源路径中使用application而不是siteoforigin时,您必须有可能的方法:

a) 图像将位于名为“Resources”的子文件夹中,.exe 文件会很小

Source="pack://application:,,,/Resources/UserCost2013Open16.png"
Build Action = Content
Copy to output directory = Copy if newer

b) 图像将包含在 .exe 中,并且不存在带有图像文件的子文件夹

Source="pack://application:,,,/Resources/UserCost2013Open16.png"
Build Action = Resource
Copy to output directory = Copy if newer
于 2013-03-26T12:18:02.910 回答
11

假设你有

就我而言,它仍然没有显示。

Clean & Rebuild 不只是为我修好它!

于 2016-06-13T11:13:44.677 回答
8

在我的情况下,我将图像放在一个名为的单独项目中Common,并且图像位于该项目中命名的文件夹下Resources。在我的另一个项目中,我添加了对图像的引用Common并设置图像的来源,如下所示:

<Image Source="/Common;component/Resources/anImage.png"/>

图像有Build Action设置 toResourceCopy to Output Directoryto Do not copy。但是,由于某种奇怪的原因,直到我删除了解决方案中的每个程序集文件并制作了一个Clean SolutionBuild Solution. 不知道为什么,但是一旦我重建了所有东西,它就开始在运行时工作了。我仍然无法弄清楚为什么它在设计时工作。

于 2014-04-23T04:36:39.493 回答
6

转到资源文件夹中的图像,右键单击图像,转到属性,单击构建操作属性,然后将其从无更改为资源。那会奏效的。

于 2015-09-09T10:07:42.167 回答
4

您应该在Visual Studio的解决方案资源管理器中添加任何内容。不只是将图像复制到 Windows 资源管理器中的文件夹,而是在解决方案资源管理器中的任何文件夹上单击右键,转到添加 > 现有项目...,然后选择要添加的资源的路径。

于 2015-08-01T08:27:59.067 回答
3

我将我的图像定义为下一个:

<Image Source="/Resources/Images/icon.png"/>

图像显示在Visual Studio设计器中,但我启动应用程序时没有显示图像!它让我疯了!我用 clean/build 尝试了所有Build Action,没有运气。

在我的情况下,问题是由于控件(使用Image)和应用程序本身位于不同的项目中这一事实引起的。Resources/Images文件夹位于Controls项目中。结果,应用程序试图在自己的 Debug 文件夹中找到 icon.png,但实际上它位于Controls的 Debug 文件夹中。

所以有两个解决方案对我有用:

1) 将资源/图像放在应用程序的项目中(当有多个项目使用Controls项目中的控件时不太好,但它可以工作)

2) 在Image中明确指定 Controls 项目的名称:

<Image Source="/Controls;component/Resources/Images/icon.png"/>
于 2017-01-13T11:00:55.117 回答
1

Visual Studio 2022(但应该在其他版本中工作)。将您的图像添加到您想要命名的文件夹中,在此示例中,我创建了一个Assets命名文件夹。然后将图像的属性设置ResourceBuild Action. 然后选择文件夹中的图像并拖放到<MenuItem.Icon>它应该正确的路径..

将图像拖放到项目中,设置为资源然后拖放到页面上

  • 请注意,您可能需要重建项目,编译器有时不会将新资源识别为需要重建。
于 2021-11-05T22:09:27.507 回答
0

创建一个新文件夹并将您的图片放在新文件夹中并在 XAML 中写入

<Image Source="/newfolder/icon.png"/>
于 2020-04-15T13:55:00.930 回答
-6

Source="file:///D:/100x100.jpg"/>对我有用。

于 2018-05-27T05:49:11.437 回答