Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pack URI and path not resolving image in WPF

I have the following directory structure

Project
\Images
 +view.png
control.xaml

and in the control I have a button defined by the following XAML:

<Button Click="Search"
        Grid.Column="1"
        Margin="0,5,5, 0"
        HorizontalAlignment="Right">
    <Button.Template>
        <ControlTemplate TargetType="{x:Type Button}">
            <Image Source="pack://application:,,,/images/view.png"
                   Width="16"
                   Height="16"
                   ToolTip="Search"
                   Cursor="Hand"
                   Opacity="0.8" />
        </ControlTemplate>
    </Button.Template>
</Button>

However, neither this pack URI method nor the "/images/view.png" is working. As I understand it, this is the same issue this question raises. However, I get the same error. The confusing thing is that in designer in Visual Studio 2008, the image renders correctly, but on the call to the InitializeComponent() call, I get:

Cannot convert string 'pack://application:,,,/images/view.png' in attribute 'Source' to object of type 'System.Windows.Media.ImageSource'. Cannot locate resource 'images/view.png'. Error at object 'System.Windows.Controls.ControlTemplate' in markup file 'RecapSpecEditControl;component/modaltreadgroupdatadialog.xaml' Line 61 Position 40.

I thought that maybe there was a namespace that I had to declare but according to the msdn site I believe I don't have to do anything like that.

like image 257
Anthony Potts Avatar asked Dec 18 '22 04:12

Anthony Potts


2 Answers

I actually got this to work, but had to set my source to "/ProjectName;component/images/view.png" Because I have the ProjectName as a referenced assembly this is then the same as the Path: portion at the msdn page that I referenced in the question.

like image 124
Anthony Potts Avatar answered Jan 14 '23 12:01

Anthony Potts


Set the Build Action for 'view.png' to Resource instead of Content and this problem should go away. I was able to reproduce your problem this way and it works correctly when set as a Resource.

like image 40
Ben Collier Avatar answered Jan 14 '23 13:01

Ben Collier