2017-06-13 27 views
0

我有我的xaml圖像。像這些...我想改變背後的代碼圖像源,如主題

<Image Name="ImageTekSayfa" Source="Resources/Dark/teksayfa.png" Margin="2,0" MouseLeftButtonUp="TekSayfa_Clicked"/> 
<Image Name="ImageFavorites" Source="Resources/Dark/favorites.png" Margin="2,0" MouseLeftButtonUp="FavoritesClick"/> 
<Image Name="ImageSoruModu" Source="Resources/Dark/sorumodu.png" Margin="2,0" MouseLeftButtonUp="SoruModu_Clicked"/> 
<Image Name="ImagePerde" Source="Resources/Dark/tahta.png" Margin="2,0" MouseLeftButtonUp="PerdeClicked"/> 
<Image Name="ImagePen" Source="Resources/Dark/kalem.png" Margin="2,0" MouseLeftButtonUp="DrawingClicked"/> 
<Image Name="ImageEraser" Source="Resources/Dark/silgi.png" Margin="2,0" MouseLeftButtonUp="EraserClicked"/> 

而我想寫這樣的我的ImageSources和更改我的代碼端的所有源代碼路徑。像這樣:

<Image Name="ImageTekSayfa" Source="Resources/{THEME_NAME}/teksayfa.png" Margin="2,0" MouseLeftButtonUp="TekSayfa_Clicked"/> 

public String THEME_NAME="dark"; 

if(currentTheme="ligth") 
THEME_NAME="light"; 

等。

回答

1

兩種可能的方法:

  1. ValueConverter - 存儲每個「主題模板」源作爲一個資源 字典中的字符串,並結合圖片來源使用正確填充所需Uri的IValueConverter的自定義實現:

    <Image Name="ImageTekSayfa" Source="{Binding Source={StaticResource teksayfa}, Converter={StaticResource themeConverter}}" Margin="2,0" MouseLeftButtonUp="TekSayfa_Clicked"/> 
    
  2. 自定義XAML行爲 - 創建一個自定義的行爲,可以在「主題模板」源轉換成所需的URI:

    <Image Name="ImageTekSayfa" Margin="2,0" MouseLeftButtonUp="TekSayfa_Clicked"> 
        <i:Interaction.Behaviors> 
         <bhv:ThemeImageSourceBehavior Source="Resources/{THEME_NAME}/teksayfa.png" /> 
        </i:Interaction.Behaviors> 
    </Image> 
    
+0

確定。我是用IValueConverter做的。 但我無法更改窗體創建後的圖像。 – wikiCan

+0

如何在更改主題名稱後刷新表單? 我無法重新加載圖像。所以一切都是靜態的。 – wikiCan

+0

您是否在資源字典中設置資源? – Eric