所有,我有一个小应用程序,它检查.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>
图像具有'Build Action = Resource','Copy to output directory = Do not copy' - 图像显示在设计器中但不在运行时显示。我已经看到了以下问题并阅读了相关答案,但没有解决问题:
答案 0 :(得分:66)
将构建操作更改为“资源”。 你的包网址也错了。使用:
Source="pack://application:,,,/Resource/UserCost2013Open16.png"
或只是
Source="/Resource/UserCost2013Open16.png"
答案 1 :(得分:27)
有2个解决方案:
1:更改图像的设置:
Build Action = Content
Copy to output directory = Copy if newer
Source="pack://siteoforigin:,,,/Resources/UserCost2013Open16.png"
2:在源路径中使用 应用 而不是 siteoforigin 时,您必须采取以下方式:
a)图像将位于名为“Resources”的SubFolder中,而.exe文件将很小
Source="pack://application:,,,/Resources/UserCost2013Open16.png"
Build Action = Content
Copy to output directory = Copy if newer
b)图像将包含在.exe中,并且不存在带有imagefile的子文件夹
Source="pack://application:,,,/Resources/UserCost2013Open16.png"
Build Action = Resource
Copy to output directory = Copy if newer
答案 2 :(得分:7)
在我的情况下,我将图像放在一个名为Common
的单独项目中,图像位于此项目中名为Resources
的文件夹下。在我的另一个项目中,我添加了对Common
的引用,并设置了这样的图像源:
<Image Source="/Common;component/Resources/anImage.png"/>
图片的Build Action
设置为Resource
,Copy to Output Directory
设置为Do not copy
。但是,由于一些奇怪的原因,在我删除解决方案中的每个程序集文件并创建Clean Solution
和Build Solution
之前,它不起作用。不知道为什么,但是一旦我重建了一切,它都开始在运行时工作。我仍然无法弄清楚它为何在Design Time工作。
答案 3 :(得分:7)
假设你有
将您的Build Action
设置为Resource
在我的情况下,它仍未显示。
Clean & Rebuild
不仅仅是Build 为我修复了它!
答案 4 :(得分:2)
您应该在Visual Studio的解决方案资源管理器中添加任何内容。 不要只是在Windows资源管理器中将图像复制到文件夹,而是在解决方案资源管理器中按右键单击任何文件夹,转到添加&gt;现有项目...... 并选择要添加的资源的路径。
答案 5 :(得分:1)
转到资源文件夹中的图像,右键单击图像,转到属性。单击BuildAction属性并将其设置为Resource from none。那会有用。
答案 6 :(得分:1)
我将我的图片定义为下一个:
<Image Source="/Resources/Images/icon.png"/>
图像显示在 Visual Studio 设计器中,但是当我启动应用程序时没有显示图像!这让我疯了! 我用干净/构建尝试了所有 Build Action ,没有运气。
在我的情况下,问题是由控件(使用 Image )和app本身在不同的项目中引起的。 Resources / Images 文件夹位于 Controls 项目中。结果,应用程序试图在自己的Debug文件夹中找到icon.png,但实际上它位于 Controls &#39;调试文件夹。
所以两种解决方案对我有用:
1)将 Resources / Images 放在应用程序的项目中(当有几个项目使用来自 Controls 项目的控件时效果不太好,但它有效)
2)在 Image :
中明确指定Controls项目的名称<Image Source="/Controls;component/Resources/Images/icon.png"/>
答案 7 :(得分:0)
来源=“file:/// D:/100x100.jpg”/&gt; 适合我。
答案 8 :(得分:0)
新建一个文件夹,然后将图片放在新文件夹中,并用XAML编写
<Image Source="/newfolder/icon.png"/>