打包URI和路径不解析WPF中的图像

时间:2009-12-09 15:34:53

标签: wpf image xaml pack-uri

我有以下目录结构

Project
\Images
 +view.png
control.xaml

在控件中我有一个由以下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>

但是,这个包URI方法和“/images/view.png”都不起作用。据我了解,这是this question提出的同一问题。但是,我得到了同样的错误。令人困惑的是,在Visual Studio 2008的设计器中,图像呈现正确,但在调用InitializeComponent()调用时,我得到:

  

无法将属性“Source”中的字符串'pack:// application:,,, / images / view.png'转换为'System.Windows.Media.ImageSource'类型的对象。找不到资源'images / view.png'。标记文件'RecapSpecEditControl; component / modaltreadgroupdatadialog.xaml'中的对象'System.Windows.Controls.ControlTemplate'出错'第61行位置40。

我认为可能有一个我必须声明的命名空间但是根据msdn site我相信我不需要做那样的事情。

3 个答案:

答案 0 :(得分:9)

我实际上有这个工作,但必须将我的源设置为“/ProjectName ;component/images/view.png”因为我将ProjectName作为引用的程序集,因此它与Path:部分相同我在问题中引用的msdn页面。

答案 1 :(得分:6)

将“view.png”的构建操作设置为“资源”而不是“内容”,此问题应该消失。我能够以这种方式重现您的问题,并且在设置为资源时它可以正常工作。

答案 2 :(得分:-3)

  

Xaml.VB

从Application文件夹和Design Page

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

Xaml.VB中的页面加载

Call LoadImages()

Xaml Design Page

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