我目前正在MainPage.xaml.cs中为这样的主题设置图像
public MainPage()
{
InitializeComponent();
setThemeIcons();
}
private void setThemedIcons()
{
Uri u;
if ((Visibility)Application.Current.Resources["PhoneDarkThemeVisibility"] == Visibility.Visible)
{
u = new Uri("/Images/img_dark.png", UriKind.Relative);
}
else
{
u = new Uri("/Images/img_light.png", UriKind.Relative);
}
btnSessionSearch.Source = new BitmapImage(u);
}
这对我来说似乎是一种低劣的编码。主要原因是我必须为应用程序中对主题敏感的每个图像执行此操作。
理想的方法是直接在XAML中绑定图像。怎么做才能让主题明白?
答案 0 :(得分:3)
看看你可以用这种方式使用的ThemedImageConverter:
<Image Stretch="None" Source="{Binding Converter={StaticResource themedImageConverter}, ConverterParameter={StaticResource PhoneBackgroundColor}}"
DataContext="/WP7SampleProject4;component/Images/{0}/appbar.feature.camera.rest.png" />
答案 1 :(得分:2)
准备一个ValueConverter,它会在文件路径中添加'dark'或'light'后缀,并在绑定图像源属性时使用它。
有关IValueConverter
接口和在XAML中使用转换器的更多信息,请访问Internet,例如。在MSDN,TheCodeproject。