19

これは非常に一般的な問題だと思いますが、適切な解決策が見つかりません。ご存知のように、WP はダーク テーマとライト テーマをサポートしています。ユーザーはテーマを変更できます。ユーザーの決定を無効にして、選択したカラー テーマですべてを表示する方法があります。ただし、この 2 つのテーマ タイプに対応しようとしているだけで、アイコンを正しい色で表示したいと考えています。

アプリケーション バーを使用すると、多くの組み込みアイコンから選択できます。これらのアイコンは、明るい色から暗い色に、またはその逆に自動的に反転します。

通常の画像がサポートされていないのはなぜですか? 例: 電話のアイコンを表示したい。組み込みのアイコンから 1 つを選択し、Microsoft SDK フォルダーからプロジェクトの Image フォルダーにコピーしました。ユーザーが暗いテーマを使用している場合、白い電話アイコンが黒い背景に表示されるため、すべて問題ありません。しかし、彼が明るいテーマに切り替えると、白地に白であるため、アイコンは見えなくなります。

携帯電話のアクセントやテーマ カラーを使用するテキスト ボックスや背景色のスタイル リソースについては十分に承知しています。しかし、XAML ページにイメージとして追加した単純なアイコンがサポートされていないのはなぜですか?

もちろん、ユーザーがダーク モードかライト モードかは、ページのコンストラクターで検出できます。次に、電話アイコンの黒または白のバージョンを読み込みます。しかし、このチェックはページにアクセスするたびに行われ、すべてが遅くなります。また、テーマに対応した画像を追加するたびにテーマのチェックを手動で追加するのも面倒です。

XAML のみで動作するソリューションはありますか? または、少なくとも維持するのは簡単ですか?また、SDK の組み込みイメージを最初から使用できないのはなぜですか? それらはすでにダーク バージョンとライト バージョンで利用可能で、アプリケーション バーで既に使用されています。

4

5 に答える 5

36

アイコンをアクションバーのように機能させたい場合は、白(暗いテーマの場合)と黒(明るいテーマの場合)にするだけで、次のように画像を不透明マスクとして長方形に追加できます。

<Rectangle Fill="{StaticResource PhoneForegroundBrush}" Width="48" Height="48" >
    <Rectangle.OpacityMask>
        <ImageBrush ImageSource="/Images/my.icon.png" />
    </Rectangle.OpacityMask>
</Rectangle>

my.icon.pngは、アクションバーに選択できるような白い画像です。

于 2012-12-20T18:04:41.867 に答える
3

ビットマップ アイコンの代わりにベクター グラフィックスを使用し、テーマに対応したブラシを使用して描画することができます。

アプリをテーマの切り替えに応答させたい場合は、何らかの方法で応答する必要があります。

ビューの基本クラスに、選択したテーマを返すプロパティを追加しました。そうすれば、その値を使用/バインドできます。

リソースの論理名をテーマ固有のリソースの名前に変換する ValueConverter を使用することもできます。

編集

これを見てください: Windows Phone 7 のカスタム ライト/ダーク テーマ リソース

于 2012-12-20T13:17:34.223 に答える
2

テーマを検出し (暗いテーマと明るいテーマをサポートすることが、これに対する最良の解決策になると思います)、それに応じて画像を設定します。これを頻繁に行う場合、2 つの画像ソースを提供でき、適切な画像ソースが使用されるカスタム コントロールを簡単に作成できます。

編集:これは、このトピックに関する別の優れた記事です。新しい画面解像度

于 2012-12-20T15:42:02.917 に答える
0

Coding 4 Funコントロールツールキットには、テーマに応じて前景色を更新するなど、アプリケーションバーのボタンを模倣した丸いボタンが含まれています。コードはオープンソースなので、おそらくそこに答えが見つかるかもしれません。または、ハックとして、RoundButtonコントロールを使用し、境界線をオフにして、Clickイベントを提供しないようにすることもできます。

于 2012-12-20T13:41:58.777 に答える
0

白の前景アイコンを選択して使用します。ライトテーマとダークテーマの両方に適しています。それが私がやってきたことです。

于 2012-12-20T13:10:40.070 に答える