2

アプリ (C# + WPF) のユーザーが独自のテーマとスキンを作成できるようにしたいと考えています。それを達成するための最良の方法は何ですか?私が探す必要があるいくつかの例、またはおそらくある種の「スキンエンジン」はありますか?

Web開発から来て、私は通常、XAMLと画像の両方を使用してUIを構築します...しかし、この方法では、すべてのソースが「ハードコード」され、メインのexeまたはいくつかのdllに埋め込まれます...

代わりに、すべてのパラメーター (色、間隔、寸法、フォント サイズなど) を含むテキスト ファイルと、フォルダーに含まれるすべての画像を jpg または png 形式で保存したいと考えています。出来ますか?

ありがとう!

4

1 に答える 1

1

ユーザーが色を選択してアプリケーションを更新できるようにする WPF 用のビルド済みスキニング エンジンについては知りません。ただし、WPFアプリケーションで「すべてのパラメーターを含むテキストファイル...」に同様のアプローチを使用しましたが、比較的うまく機能しました。

テーマの色/アイコンなどを含む XML ファイルを使用しました。これは実行時にロードされ、確定した色と画像でアプリケーション リソースを更新するために使用されます。アーキテクチャによっては、スキン/テーマをデータベースに保存することもできます。

これが機能するためには、いくつかの提案があります。

  • Colorsアプリ全体で使用できる標準セットを定義します (例: LightControlColor、ControlColor、DarkControlColor、LightBackgroundColor、BackgroundColor、Dark...)。これらは XML ファイルで定義された色で、スキン/テーマが変更されると更新されます。
  • Brushesすべての XAML で使用するの標準セットを定義します。これらのブラシは を使用するColorsため、ControlBackgroundBrush はSolidColorBrush(Colors上から) のいずれかで構成されているかLinearGradientBrush、複数の色で構成されている可能性があります。
  • XML ファイルに基づいてリソースを更新するときにすべてが更新されるようにするのDynamicResourceではなく、どこでも使用します。StaticResourceColor
  • はビジュアル要素がレンダリングされるときに評価されるため、メイン ウィンドウが表示される前にColorsを更新する必要があります。スプラッシュ スクリーンは、スキンの読み込み、解析、およびマージ中にユーザーを占有する優れた方法です。Application.ResourcesDynamicResources
  • 画像はそれほど多くはありませんでしたが、XML 内にバイナリ形式で保存したものはあったと思います。
  • スキン/テーマを作成するための別のアプリケーションを作成しました。これはメインのアプリとは独立して配布され、厳密にスキンの作成と更新を目的としていました。
于 2013-03-04T05:05:35.183 に答える