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

ファイル パスに「dark」または「light」サフィックスを追加する ValueConverter を準備し、画像ソース プロパティをバインドするときにそれを使用します。

インターフェイスと XAML でのコンバーターの使用に関する詳細情報IValueConverterは、インターネットで見つけることができます。MSDNTheCodeprojectで。

于 2012-07-02T08:40:18.953 に答える