【发布时间】:2016-02-28 01:26:05
【问题描述】:
我目前正在尝试在 C#/WPF 中设置按钮背景的 ImageSource。我以编程方式执行此操作,因为我在某个可选目录中为每个(图像)文件显示一个按钮,因此事先不知道按钮的数量。
在遍历目录中的每个图像文件时,我尝试使用以下方法实例化 BitmapImage(用于当前索引):
private string[] _pathsInCurrentFolder;
public ImageSource[] ImagesInCurrentFolder { get; private set; }
//...
ImagesInCurrentFolder[i] = new BitmapImage(new Uri(_pathsInCurrentFolder[i]));
这适用于大多数文件路径。但是,我遇到了一些包含 % 字符后跟(至少)两个数字的文件。有趣的是,在大多数情况下,这似乎不是问题,但是一个文件将“%7E”作为子字符串。 URI 构造函数将其转换为“~”(因为 7E 是 ~ 的 Ascii)并且系统在尝试访问文件路径时抛出了 FileNotFoundException。
所以我的问题是:我如何实例化一个指向本地图像文件的 ImageSource 对象,该文件包含子字符串“%7E”或其他可能我还不知道的中断子字符串。我不坚持使用 URI 的解决方案,任何可行的都可以。
我正在运行 Win7 Prof 64bit, VS 2015 with .NET 4.6.1 btw。
我已经尝试过了(没有成功):
- 将“%”替换为
Uri.HexEscape("%"),这破坏了所有其他出现“%”的文件路径。 - 在
Uri构造函数中更改UriKind。任何设置都没有效果。
提前致谢!
【问题讨论】:
标签: c# wpf uri imagesource