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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在WPF中,如何使用XAML指定嵌套在目录中的文件的路径?相关的知识,希望对你有一定的参考价值。

我想这样做......

<Image x:Name="imgGroupImage" Source="Imagesunlock.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的文件夹中。如何从表单映射到图像?

我尝试了在WPF中不起作用的Source="..Imagesunlock.png"

有帮助吗?

答案

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

Source="/Images/unlock.png"

这通常对我有用。

如果做不到这一点,请看看Pack URIs

另一答案
  1. 将您的图像添加到VS中的项目
  2. 右键单击该图像unlock.png
  3. 转到上下文菜单/属性
  4. 将构建操作更改为资源

而已 :-)

另一答案

你有没有尝试将源设置为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属性中找到输入文件路径的确切方法。

另一答案

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

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

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

以上是关于在WPF中,如何使用XAML指定嵌套在目录中的文件的路径?的主要内容,如果未能解决你的问题,请参考以下文章

wpf中,如何引用其他xaml文件中的Resources

如何在 WPF 中的 Xaml 文件中添加注释?

如何在 WPF 窗口上加载 Xaml 文件?

WPF 中.XAML文件如何读取资源文件?

如何在 Visual Studio 2019 中为 C# WPF 切换 XAML 中的行注释

wpf : 绑定到另一个 xaml 文件中的控件