2010-04-13 58 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工作,根據您的需要返回。