2017-04-05 187 views
1

XAML圖片來源我有很多關於我的項目,這就是爲什麼我在我的解決方案創建一個圖片資源圖片的我所引用的所有這些圖片,因爲這:與靜態資源

enter image description here

然後,我引用我的XAML就象這樣:

<Image 
     x:Name="ImgFail" 
     Grid.Row="1" 
     Grid.ColumnSpan="2"    
     Source="{x:Static img:Imagenes.IMG_FailStamp}"/> 

這樣,它扔在運行時間錯誤不是「source'property

有效值

但是,如果直接參考圖像:

<Image 
     x:Name="ImgOk" 
     Grid.Row="1" 
     Grid.ColumnSpan="2"    
     Source="/||||||||.Recursos.Imagenes;component/Resources/Ok-PNG-Pic.png"/> 

它的工作原理。

我該如何正確使用靜態資源設置圖像源?

回答

1

這是因爲當你做

Source="{x:Static img:Imagenes.IMG_FailStamp}" 

這rougly編譯如下:

img.Source = Imagenes.IMG_FailStamp 

Image.SourceImageSource型的,你的IMG_FailStampstring型的 - 這並不編譯。但是,當你這樣做:

Source="/||||||||.Recursos.Imagenes;component/Resources/Ok-PNG-Pic.png" 

不同了 - 現在您的字符串將通過ImageSourceConverter,它會將其轉換爲有效ImageSource(所以將讀取該文件並從它創建源)。

所以,當你使用x:Static - 你只是直接告訴使用什麼值,並沒有轉換器參與。所以如果你想使用x:Static - 目標屬性應該是ImageSource

如果你仍然要存儲在資源路徑的圖像,請執行下列操作:

  1. 打開resources.resx文件,並從「內」到「大衆」頂部更改訪問修飾符。這將使公共財產Imagenes.IMG_FailStamp

  2. 綁定到這樣的:

    Source="{Binding Source={x:Static img:Imagenes.IMG_FailStamp}, Mode=OneTime}" 
    

綁定將運行必要的轉換器和圖像顯示細。

+0

Tks爲您提供幫助。這意味着必須寫一個轉換器從字符串到ImageSource? –

+0

@JuanPabloGomez我已經用一種方法更新了答案,以使其在您的方案中發揮作用。 – Evk