2016-02-28 112 views
1

我正在尝试设置C#/ WPF中按钮背景的ImageSource。我以编程方式执行此操作,因为我正在为某个可选目录中的每个(图像)文件显示一个按钮,因此事先不知道按钮的数量。将ImageSource设置为包含%字符的本地文件路径

虽然与迭代在我试图实例化一个BitmapImage的(当前指数)的diectory每个图像文件:

private string[] _pathsInCurrentFolder; 
public ImageSource[] ImagesInCurrentFolder { get; private set; } 

//... 

ImagesInCurrentFolder[i] = new BitmapImage(new Uri(_pathsInCurrentFolder[i])); 

这工作对大多数文件路径。但是,我碰到一些包含%字符的文件,后面是(至少)两个数字。有趣的是,在大多数情况下,这似乎不成问题,但是一个文件具有“%7E”作为子字符串。 URI构造函数将其转换为“〜”(As 7E为〜的Ascii),系统在尝试访问文件路径时抛出FileNotFoundException。

所以我的问题是:我如何实例化一个ImageSource对象指向包含子字符串“%7E”的本地图像文件或可能还没有意识到的其他中断子串。我不坚持使用URI的解决方案,任何工作都很好。

我正在运行Win7 Prof 64bit,VS 2015与.NET 4.6.1顺便说一句。

我已经尝试过(没有成功):

  • 更换 “%” 与Uri.HexEscape("%"),这打破了所有其他文件路径为 “%” 出现次数。
  • 更改Uri构造函数中的UriKind。无论什么设置都没有效果。

在此先感谢!

回答

1

使用Uri.EscapeUriString,startwith file:///,并改变\/

string fileName="D:\\a%7E.jpg"; 
var bmp = new BitmapImage(
    new Uri(Uri.EscapeUriString(@"file:///" + fileName.Replace('\\', '/')))); 
+0

不客气。 – Sakura

相关问题