簡體   English   中英

我想在背后的代碼上更改圖像源,例如主題

[英]I want to change image source on code behind, like theme

我的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並在代碼側輕松更改所有Source路徑。 像這樣:

<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. ValueConverter-將每個“主題模板化”源作為字符串存儲在資源字典中,並使用IValueConverter的自定義實現綁定圖像源,該實現正確填充了所需的Uri:

     <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> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM