我有一个属性为Uri的自定义控件。当我将此Uri设置为相对路径"InterfaceImages/Wait.gif"
时,我希望当我使用它打开该文件时它将转换为当前目录。预期的目录看起来像这样:
C:\Users\MyUsername\Documents\Visual Studio 2012\Projects\MySolution\MyProject\InterfaceGraphics\Wait.gif
但是,WPF将其变成了这个:
//-->Note the lowercased filenames<--//
C:\Users\MyUsername\documents\visual studio 2012\Projects\MySolution\MyProject\bin\Debug\InterfaceGraphics\Wait.gif
导致应用程序抛出异常:“无法找到路径的一部分'[path-shown-above]'。”
在我的代码中,我是否混淆了当前目录。那为什么要这样做呢?
我不知道这是多么相关,但抛出它的函数调用是:
_gifDecoder = new GifBitmapDecoder(this.GifSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
其中this.GifSource
是System.Uri
类型的属性,创建项目并设置属性的XAML如下所示:
<local:GifImage x:Name="WaitIcon" HorizontalAlignment="Center"
Height="100" VerticalAlignment="Center" Width="100"
MaxWidth="100" MaxHeight="100"
GifSource="InterfaceGraphics/Wait.gif"/>
答案 0 :(得分:0)
默认情况下,工作目录是包含可执行文件的目录。 Visual Studio生成的可执行文件位于项目的bin / Debug(或bin / Release)子文件夹中,因此这是您的工作目录。由于绝对路径是工作目录和相对路径的组合,因此您所看到的是完全正常的。
您有几种选择:
顺便说一句,如果您想要显示动画GIF图像,可以使用我的WpfAnimatedGif库,它就是这样做的。它也是available as a NuGet package。