Pack URI and path not resolving image in WPF

给你一囗甜甜゛ 提交于 2019-12-01 05:42:10

问题


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.


回答1:


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.




回答2:


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.




回答3:


Xaml.VB

Call the Image from Application folder and Design Page

Private Sub LoadImages()
        Dim strUri As String
        strUri = AppDomain.CurrentDomain.BaseDirectory() & "\NavigationImages\settingsicon.png"
        Image2.Source = New BitmapImage(New Uri(strUri))
    End Sub

Page load in Xaml.VB

Call LoadImages()

Xaml Design Page

Image Name="Image2"Height="32" HorizontalAlignment="Left" 


来源:https://stackoverflow.com/questions/1874705/pack-uri-and-path-not-resolving-image-in-wpf

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!