WPFbutton中的图像在运行时不可见
所有,我有以下开始到一个小的应用程序检查.resx文件的embedded括号的一致性(以便不匹配的“… {0}”string的运行时错误不会发生)。 对于MainWindow.xaml,我有以下XAML,而我的特殊问题涉及要在button上显示的图像
<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>
图像具有“生成操作=资源”,“复制到输出目录=不复制” – 图像显示在devise器中,但在运行时不显示。 我看到以下问题并阅读相关答案,但没有一个能够解决问题:
-
WPF控件图像在应用程序使用时不显示
-
图像问题在WPF(图像不显示)
-
在WPF中不显示button的背景图像
如何让运行时出现button图像?
将构build操作更改为“资源”。 另外你的包地址是错误的。 可以使用:
Source="pack://application:,,,/Resource/UserCost2013Open16.png"
或干脆
Source="/Resource/UserCost2013Open16.png"
有2个解决scheme:
1:更改图像的设置:
Build Action = Content Copy to output directory = Copy if newer Source="pack://siteoforigin:,,,/Resources/UserCost2013Open16.png"
2:在源path中使用应用程序代替siteoforigin时,您必须采取以下可能的方式:
一)图像将在一个名为“资源”的子文件夹和.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
在我的情况下,我在一个名为Common
的单独项目中的图像,图像是在这个项目中名为Resources
的文件夹下。 在我的另一个项目中,我添加了对Common
的引用,并设置了这样的图像的来源:
<Image Source="/Common;component/Resources/anImage.png"/>
Build Action
设置为Resource
和Copy to Output Directory
的图像Do not copy
。 但是,由于一些奇怪的原因,直到我删除了我的解决scheme中的每个程序集文件并Build Solution
了一个Clean Solution
and Build Solution
Clean Solution
和Build Solution
Clean Solution
,它才工作。 不知道为什么,但是一旦我重build了一切,它就开始在运行时工作了。 尽pipe如此,我仍然无法弄清楚为什么在Design Time工作。
在我的情况下,一个简单的Clean & Rebuild
固定它。
您应该在Visual Studio的解决scheme资源pipe理器中添加任何东西。 不要只是将图像复制到Windows资源pipe理器中的文件夹中,请按下右键单击解决scheme资源pipe理器中的任何文件夹,然后select添加>现有项目…,然后select要添加的资源的path。
转到资源文件夹中的图像,右键单击图像,转到属性。 单击BuildAction属性并将其设置为无资源。 这将工作。
我把我的形象定义为下一个:
<Image Source="/Resources/Images/icon.png"/>
该图像显示在Visual Studiodevise器中,但在启动应用程序时不显示图像! 这让我疯狂! 我尝试了所有构build行动与干净/构build,没有运气。
在我的情况下,问题是由控制(使用图像 )和应用程序本身在不同的项目中引起的。 Resources / Images文件夹位于Controls项目中。 结果应用程序尝试在自己的Debug文件夹中findicon.png,但实际上它在Controls的Debug文件夹中。
所以有两种解决scheme适用于我:
1)把资源/图像放在应用程序的项目中(当有几个项目使用控件项目的控件时,效果不是很好)
2)在Image里面明确指定Controls项目的名称:
<Image Source="/Controls;component/Resources/Images/icon.png"/>