2010-04-13 57 views
3

我有这样的事情在我的XAML:得到的图像文件绝对路径在WPF

<Grid> 
    <Image Name="image" Source="../../Images/DefaultImage.png" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"></Image> 
</Grid> 

我怎样才能获得(用我的代码隐藏的C#代码)的图像源的绝对路径?

回答

5

当从URI字符串或文件名转产,ImageConverter创建BitmapDecoder并提取其第一帧。获得Uri应该可能与:

((BitmapFrame)image.Source).Decoder.ToString() 

请注意,这通常会返回绝对Uri而不是在XAML中找到的原始Uri。如果您需要XAML中的确切原始Uri,则可以在BitmapDecoder的_uri字段中找到它,但您需要反射和提升的代码权限才能到达它,此外,您的代码在将来的.NET Framework版本中可能不起作用。

+0

不工作 – eMi 2012-05-29 07:49:56

2

你可以试试这个:

string path = ((BitmapImage)image.Source).UriSource.AbsolutePath; 
+1

它不起作用。我得到一个异常,因为转换为BitmapImage – melculetz 2010-04-14 06:22:34

+0

强制位图图像可以接受吗?如: Robin 2010-04-14 14:43:58

+0

是的,如果我将有图像声明这样,它应该工作,但我有不同的 – melculetz 2010-04-22 10:41:45

3

其每一次对我的作品的方法是这样的简单的线条

(YourImage.Source as BitmapImage).UriSource 

此外,您可以在AbsolutePath或UriSource的绝对URI工作,根据您的需要返回。