Image in WPF Button not Visible at Runtime

All, I have the following start to a small application that checks .resx files for consistency of embedded brackets (so that runtime errors of non-matching "... {0}" strings don't happen). I have the following XAML for the MainWindow.xaml, and my particular problem relates to the image that is to be displayed on the 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>

The image has 'Build Action = Resource', 'Copy to output directory = Do not copy' - the image shows in the designer but not at runtime. I have seen the following questions and read the relevant answers, but none resolve the problem:

  • WPF control images not displayed when consumed by an application

  • image problem in wpf (image does not show up)

  • Background Image of Button not showing in WPF

  • How do I get the button image to appear at runtime?


    Change the build action to 'Resource'. Also your pack url is wrong. Either use:

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

    or simply

    Source="/Resource/UserCost2013Open16.png"
    

    There are 2 Solutions:

    1: Change the settings of the image:

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


    2: When Using application instead of siteoforigin in the source path, you have to possible ways:

    a) Image will be in a SubFolder called "Resources" and .exe file will be small

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

    b) Image will be included in the .exe and no Subfolder with imagefile will exist

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

    In my case I had the images in a separate project named Common and the images were under a folder named Resources in this project. In my other project, I added a reference to Common and set the source of the images like this:

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

    The images have the Build Action set to Resource and Copy to Output Directory to Do not copy . However, for some strange reason it wasn't working until I deleted every assembly file in my solution and made a Clean Solution and Build Solution . Not sure why, but it all started working at runtime once I rebuilt everything. I still can't figure out why it was working at Design Time though.

    链接地址: http://www.djcxy.com/p/50434.html

    上一篇: WPF赢得应用程序.HTML资源,如何路径到.html。资源中的图像

    下一篇: 在WPF按钮中的图像在运行时不可见