ここでは YKToolkit.Controls が提供する WPF テーマを適用する方法を紹介します。
ページ内リンク
ウィンドウの適用
YKToolkit.Controls では特有の WPF テーマを提供しており、Window コントロールも含まれています。
このため、YKToolkit.Controls を使用する場合はデフォルトの System.Windows.Window クラスを使用せずに、
YKToolkit.Controls.Window クラスを使用するように書き換える必要があります。
WPF アプリケーションに対して新しいウィンドウを追加した場合、
デフォルトでは次のような XAML とコードビハインドが生成されます。
これらを次のように書き換えることで、
System.Windows.Window クラスを YKToolkit.Controls.Window クラスに変更できます。
コードビハインドでは、余計な参照をすべて削除し、
YKToolkit.Controls のみを using で指定することで、
元々は System.Windows.Window クラスを継承するように設定されていた新規ウィンドウクラスが、
YKToolkit.Controls.Window クラスを継承するように変更されます。
例えば上記の変更を「MVVM を意識した内部構造」で紹介した MainView に対しておこなった場合、
このアプリケーションを起動すると次のように外観が変更されたウィンドウが表示されるようになります。
このウィンドウでは、Alt+Space で表示されていたシステムメニューはありません。
また、Alt+F4 で閉じることもできなくなります。
YKToolkit.Controls.Window クラスで表示したウィンドウには、
閉じる、最大化 (元に戻す)、最小化ボタンの他に別の機能を持つボタンが表示されるようになります。
次のボタンは常に手前に表示ボタンです。ピンを立てた状態にすると、そのウィンドウが常に手前に表示されるようになります。
内部的には Window クラスの Topmost プロパティを true にしているだけです。
その左に表示されているボタンはテーマ切替ボタンです。
YKToolkit.Controls では Dark と Light というテーマが用意されていて、
デフォルトでは Dark テーマが選択されています。
これを Light に切り替えると、濃色テーマから淡色テーマに切り替わります。
一番左端に表示されるボタンはバージョン確認ボタンです。
押すとYKToolkit.Controls.dll のバージョンを確認できます。
これらの追加されたボタンや、最小化、閉じるボタンなどの表示/非表示は次のプロパティで制御できます。
- CloseButtonVisibility
- RestoreButtonVisibility
- MaximizeButtonVisibility
- MinimizeButtonVisibility
- TopmostButtonVisibility
- ThemeChangeButtonVisibility
- VersionButtonVisibility
また、有効/無効は次のプロパティで制御できます。
- IsCloseButtonEnabled
- IsRestoreButtonEnabled
- IsMaximizeButtonEnabled
- IsMinimizeButtonEnabled
- IsTopmostButtonEnabled
- IsThemeChangeButtonEnabled
- IsVersionButtonEnabled
標準コントロール
テーマ変更後、WPF が提供する標準コントロールも自動的にテーマが適用されます。
したがって、コントロールを配置するときは特に意識する必要がありません。
例えば次のようなコードでテーマが変更された UI になります。
デフォルトテーマの変更
デフォルトのテーマは Dark ですが、
これを起動時に Light にするには、YKToolkit.Controls.ThemeManager クラスの Initilize() メソッドを使います。
起動時に設定するため、App.xaml.cs に記述します。
ウィンドウが表示された後では、既に初期化がおこなわれてしまうため、
Initialize() メソッドではテーマは変更されません。
この場合は、UI のテーマ切替ボタンと同じ動作をする
SetTheme() メソッドを使う必要があります。
こちらのメソッドには実体が必要なので、ThemeManager のインスタンスから実行します。