2016-03-09 3 views
7

私はライト/ダークをテーマにしたイメージを使用することは非常に簡単です。しかし、唯一のデザイナーモードでは、私はダーク/ライトテーマのアセットの修飾子

SomeImage.Theme-Light.png 

やテーマ・ライトという名前のフォルダの下に画像を置く

Theme-Light/SomeImage.png 

のような修飾子がうまくいくことを期待し、それがなかったです。私はアプリケーションを実行すると、必要なテーマが正しく設定されていても(アプリケーションとページの両方のレベルで、他のすべてのThemeResourcesが正しくロードされるように)、間違ったイメージがロードされます。

さまざまなテーマの異なる画像を読み込むための回避策については知っていますので、それは私が探しているものではありません。実行時にこの修飾子を使ったこのアプローチがなぜ機能しないのか不思議です。使用すべき異なる名前修飾子はありますか?

私はこの記事を読んで:「How to name resources using qualifiers (XAML)"をそれだけで高コントラストのサポートに関して資産に名前を付ける方法を示し

+0

encounteを使用しますスプラッシュスクリーンの画像でこれを自分自身で鳴らしてください。私はWP10の暗いテーマのための白いアイコンを、もう一度白いテーマのための別の色のアイコン – Quincy

+0

"コントラスト - 白"と "コントラスト - 黒"を使用すると、例えば、 Groove Musicはこのアプローチを使用します。私のアプリでは正常に動作しますが、唯一の例外はスプラッシュスクリーンです。 – sibbl

+0

@sibblあなたの提案をお寄せいただきありがとうございますが、ハイコントラストがオンになっていない限り、これは機能しません。ファイル名は(例えば、スケール150):LogoWithName.scale-150_contrast-black.png。あなたがこれを動作させるために設定している何か他にないと確信していますか? –

答えて

2

このaproachは修飾子ほど便利ではありませんが、それが動作

定義します。 App.xamlに

<ResourceDictionary> 
    <ResourceDictionary.ThemeDictionaries> 
     <ResourceDictionary x:Key="Light"> 
      <ImageSource x:Key="Logo">/Assets/Logo-White.png</ImageSource> 
     </ResourceDictionary> 

     <ResourceDictionary x:Key="Dark"> 
      <ImageSource x:Key="Logo">/Assets/Logo-Blue.png</ImageSource> 
     </ResourceDictionary> 

     <ResourceDictionary x:Key="HighContrast"> 
      <ImageSource x:Key="Logo">/Assets/Logo-White.png</ImageSource> 
     </ResourceDictionary> 
    </ResourceDictionary.ThemeDictionaries> 
</ResourceDictionary> 

はその後

<Image Source="{ThemeResource Logo}"/>