Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF中的相对Uri转换为错误的绝对目录_C#_Wpf_Xaml_Uri - Fatal编程技术网

C# WPF中的相对Uri转换为错误的绝对目录

C# WPF中的相对Uri转换为错误的绝对目录,c#,wpf,xaml,uri,C#,Wpf,Xaml,Uri,我有一个自定义控件,其属性类型为Uri。当我将此Uri设置为相对路径“InterfaceImages/Wait.gif”时,我希望在使用它打开该文件时将其转换为当前目录。预期的目录如下所示: C:\Users\MyUsername\Documents\Visual Studio 2012\Projects\MySolution\MyProject\InterfaceGraphics\Wait.gif <local:GifImage x:Name="WaitIcon" Horizontal

我有一个自定义控件,其属性类型为Uri。当我将此Uri设置为相对路径
“InterfaceImages/Wait.gif”
时,我希望在使用它打开该文件时将其转换为当前目录。预期的目录如下所示:

C:\Users\MyUsername\Documents\Visual Studio 2012\Projects\MySolution\MyProject\InterfaceGraphics\Wait.gif
<local:GifImage x:Name="WaitIcon" HorizontalAlignment="Center"
        Height="100" VerticalAlignment="Center" Width="100"
        MaxWidth="100" MaxHeight="100"
        GifSource="InterfaceGraphics/Wait.gif"/>
但相反,WPF将其分解为:

              //-->Note the lowercased filenames<--//
C:\Users\MyUsername\documents\visual studio 2012\Projects\MySolution\MyProject\bin\Debug\InterfaceGraphics\Wait.gif
其中
this.GifSource
是类型为
System.Uri
的属性,创建项并设置属性的XAML如下所示:

C:\Users\MyUsername\Documents\Visual Studio 2012\Projects\MySolution\MyProject\InterfaceGraphics\Wait.gif
<local:GifImage x:Name="WaitIcon" HorizontalAlignment="Center"
        Height="100" VerticalAlignment="Center" Width="100"
        MaxWidth="100" MaxHeight="100"
        GifSource="InterfaceGraphics/Wait.gif"/>

默认情况下,工作目录是包含可执行文件的目录。VisualStudio生成的可执行文件位于项目的bin/Debug(或bin/Release)子文件夹中,因此这是您的工作目录。因为绝对路径是工作目录和相对路径的组合,所以您看到的是完全正常的

您有几个选择:

  • 对于希望在可执行文件目录中可用的项目项,将“复制到输出目录”属性设置为true
  • 将项目调试属性中的工作目录更改为项目目录,而不是输出目录
  • 将图像作为资源嵌入应用程序中(您需要相应地更改代码以加载图像)

顺便说一句,如果你想显示动画GIF图像,你可以使用我的库,它正是这样做的。它也是。

哦,天哪。我这一刻真蠢。我是如何忘记项目与构建现象的p尽管如此,我还是尝试将图像文件设置为作为资源构建,并在代码中相应地引用它。我应该发布另一个关于这个的问题,因为我按照MS文档、教程等中的说明做了所有事情。。。它一直在对我大喊大叫,说Uri是空的。我还打算试试你的库。问:它是处理gif帧持续时间/偏移量/等,还是像IE和其他类似的microsoft应用程序一样假设恒定的帧速率?@FireWingLead,是的,它处理gif动画的所有内容,包括帧持续时间、部分帧、各种帧处理方法等。