【问题标题】:In WPF how do I specify the path to a file nested in a Directory using XAML?在 WPF 中,如何使用 XAML 指定嵌套在目录中的文件的路径?
【发布时间】:2010-09-21 16:36:57
【问题描述】:

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

<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”第 273 行位置 51 中的对象“System.Windows.HierarchicalDataTemplate”出错。

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

我尝试了Source="..Images\unlock.png",它在 WPF 中不起作用。

有什么帮助吗?

【问题讨论】:

    标签: wpf xaml file path


    【解决方案1】:

    尝试使用斜杠而不是反斜杠,并使用斜杠开头的绝对路径:

    Source="/Images/unlock.png"
    

    这通常对我有用。

    如果失败,请查看Pack URIs

    【讨论】:

    【解决方案2】:
    1. 在 VS 中将图像添加到项目中
    2. 右键单击该图像unlock.png
    3. 转到上下文菜单/属性
    4. 将构建操作更改为资源

    就是这样:-)

    【讨论】:

      【解决方案3】:

      您是否尝试将源设置为BitmapImage

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

      我相信UriSource 的默认类型Uri 是相对的Uri,它适用于应用程序的基类。您可能会发现配置BitmapSource 比尝试在Source 属性中找到输入文件路径的确切方式要容易一些。

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-01-10
          • 1970-01-01
          • 1970-01-01
          • 2017-03-15
          • 1970-01-01
          • 2023-03-18
          • 2012-08-28
          • 1970-01-01
          相关资源
          最近更新 更多