标准方式为Windows Phone动态设置基于主题的图像

时间:2012-07-02 08:34:19

标签: c# silverlight windows-phone-7 windows-phone-7.1

我目前正在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中绑定图像。怎么做才能让主题明白?

2 个答案:

答案 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,例如。在MSDNTheCodeproject