2009-08-05 11 views
1

AeroテーマでXPまたはVistaを実行しているときにマイナーな調整が必要なカスタムコントロールがあります。テーマを検出する簡単な方法はありますか(ユーザーがテーマを変更できるためオペレーティングシステムの検出が不十分です)これはスタイルのトリガーですか?WPFのXamlで現在のテーマを検出するにはどうすればよいですか?

は私が必要な外観を得るためにVista上の小さなマージンの変更を適用する必要があります。

 <Setter Property="Margin" 
       Value="0,-1,0,-1" /> 

上記セッターが現在無条件である(例えばないトリガーで)が、2つのバージョンを持つ私を必要とします。

ソリューションはXamlのみである必要がありますが、必要であれば、DataTriggerに関連付けるプロパティを公開することができます。

答えて

1

ValueConverterに余白の設定を適用し、Convertメソッドでプラットフォーム/テーマのチェックを行うことができます。

+0

私はそれを考えていましたが、デザイナーのロジックをバックエンドに移していると思っていましたが、Xamlのテーマを検出する(またはそこに投影する)と、Xamlは視覚的な外観になりました。 –

+0

@Sean:コンバーターはバインディングには便利ですが、その場合バインディングはありません。マークアップの拡張がおそらくより適切でしょう。 @レー:コンバーターやマークアップ拡張子は "バックエンド"ではありません...それらはフロントエンドの作業をするための単なる定型コードです。 –

+0

@Thomas、私はXAMLからすべてを行うことができないことを知っていますが、コードの背後には一般的な情報を公開し、プレゼンテーション。 @ショーンの答えを読んで、私は彼のポイント(額を叩く)の一部を見逃したようだ。私が最後に実際に行ったことは、 "CurrentTheme"プロパティを含む一般的な設定MVVMを公開し、 "Luna"または "Aero"テーマを検出できるようにすることでした。 –

関連する問題