在WPF中,如何使用XAML指定嵌套在目录中的文件的路径?

时间:2008-11-10 19:50:27

标签: wpf xaml file path

我正在尝试这样做......

<Image x:Name="imgGroupImage" Source="Images\unlock.png" Margin="0,0,5,0" />

但是我得到了这个错误...

  

无法将属性“Source”中的字符串“Images \ unlock.png”转换为“System.Windows.Media.ImageSource”类型的对象。找不到资源'forms / images / unlock.png'。标记文件'Fuse; component / forms / mainwindow.xaml'中的对象'System.Windows.HierarchicalDataTemplate'出错'第273行第51位。

如您所见,包含此XAML的表单位于名为Forms的文件夹中。我的图像位于名为Images的文件夹中。如何从表单映射到图像?

我尝试了Source="..Images\unlock.png",这在WPF中无效。

任何帮助?

4 个答案:

答案 0 :(得分:9)

尝试使用斜杠而不是反斜杠,并使用斜杠引导使用绝对路径:

Source="/Images/unlock.png"

这通常适合我。

如果不这样做,请查看Pack URIs

答案 1 :(得分:5)

  1. 将您的图片添加到VS中的项目
  2. 右键点击该图片 unlock.png
  3. 转到上下文菜单/属性
  4. 将构建操作更改为资源
  5. 多数民众赞成: - )

答案 2 :(得分:0)

您是否尝试过将来源设为BitmapImage

<Image x:Name="imgGroupImage" Margin="0,0,5,0"  >
   <Image.Source>
      <BitmapImage UriSource="Images/unlock.png" />
   </Image.Source>
</Image>

我认为Uri的默认类型UriSource是相对Uri,它取决于应用程序的基类。您可能会发现,您可以更轻松地配置BitmapSource,而不是尝试找到在Source属性中输入文件路径的确切方式。

答案 3 :(得分:0)

为了使用位于与XAML所在文件夹不同的文件夹中的资源,请执行以下操作:

<Image Source="pack://application:,,,/Resources/image.png"/>

资源是您要使用资源的目录名称, image.png是要显示的图像名称。感谢@ matt-hamilton和@ brian-hinchey以及他们提到的Pack URI 与您自己的转换器完美配合。您只需返回上面的字符串匹配模式。