2

我目前正在 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 中绑定图像。如何做到这一点以使其具有主题意识?

4

2 回答 2

3

看看 ThemedImageConverter 你可以这样使用它:

<Image Stretch="None" Source="{Binding Converter={StaticResource themedImageConverter}, ConverterParameter={StaticResource PhoneBackgroundColor}}"
DataContext="/WP7SampleProject4;component/Images/{0}/appbar.feature.camera.rest.png" />
于 2012-07-02T17:57:44.437 回答
2

准备一个 ValueConverter,它将在文件路径中添加“dark”或“light”后缀,并在绑定图像源属性时使用它。

有关接口和在 XAML 中使用转换器的更多信息IValueConverter可以在 Internet 中找到,例如。在MSDN上,TheCodeproject

于 2012-07-02T08:40:18.953 回答