テーマテンプレートを適用する |
テーマテンプレートはリソースファイルアセンブリ(*.dll)として提供され、InputMan for WPF をインストールしたディレクトリの Bin フォルダにコピーされています。それぞれのテーマテンプレートに対応するリソースファイルアセンブリは以下のとおりです。
テーマ | リソースファイルアセンブリ | リソースを参照する際に指定するリソース位置 | 説明 |
---|---|---|---|
Generic | (なし) | (なし) | 標準的なデザインのテーマです。テーマテンプレートを明示的に指定しない場合のデフォルトテーマとなります。 |
Aero | GrapeCity.WPF.InputMan.Aero.dll | Themes/Aero.NormalColor.xaml | Aero の外観に似たデザインのテーマです。 |
Aero2 | GrapeCity.WPF.InputMan.Aero2.dll | Themes/Aero2.NormalColor.xaml | Aero2 の外観に似たデザインのテーマです。 |
AeroLite | GrapeCity.WPF.InputMan.AeroLite.dll | Themes/AeroLite.NormalColor.xaml | AeroLite の外観に似たデザインのテーマです。 |
BureauBlue | GrapeCity.WPF.InputMan.BureauBlue.dll | Themes/BureauBlue.xaml | Office Blue の外観に似たデザインのテーマです。 |
BureauBlack | GrapeCity.WPF.InputMan.BureauBlack.dll | Themes/BureauBlack.xaml | Office Black の外観に似たデザインのテーマです。 |
Classic | GrapeCity.WPF.InputMan.Classic.dll | Themes/Classic.xaml | Classic の外観に似たデザインのテーマです。 |
ExpressionDark | GrapeCity.WPF.InputMan.ExpressionDark.dll | Themes/ExpressionDark.xaml | Expression Blend の外観に似たデザインのテーマです。 |
Luna(Homestead) | GrapeCity.WPF.InputMan.Luna.dll | Themes/Luna.Homestead.xaml | Luna Homestead の外観に似たデザインのテーマです。 |
Luna(Mettlic) | GrapeCity.WPF.InputMan.Luna.dll | Themes/Luna.Metallic.xaml | Luna Metallic の外観に似たデザインのテーマです。 |
Luna(NormalColor) | GrapeCity.WPF.InputMan.Luna.dll | Themes/Luna.NormalColor.xaml | Luna NormalColor の外観に似たデザインのテーマです。 |
Royale | GrapeCity.WPF.InputMan.Royale.dll | Themes/Royale.NormalColor.xaml | Royale の外観に似たデザインのテーマです。 |
メモ |
---|
それぞれのコントロールに対するテーマテンプレートの適用例は、各コントロールの「外観を変更する」トピックを参照してください。 |
InputMan for WPF の各コントロールに対してこれらのテーマテンプレートを適用するには、以下の手順にしたがって使用するテーマテンプレートを設定します。
以下のサンプルコードは UserControl の Resources 内に BureauBlue テーマテンプレートのリソースを追加する例です。
<UserControl.Resources> <ResourceDictionary Source="/GrapeCity.WPF.InputMan.BureauBlue;component/Themes/BureauBlue.xaml"/> </UserControl.Resources>
メモ |
---|
テーマテンプレートを特定のコンテナのリソースとして指定すると、コンテナ上に配置されたコントロールに対してのみテーマが適用されます。これにより、複数のテーマテンプレートを同一ページ上で使用することができます。 |
AeroLite をコンボコントロールあるいはリストコントロールのスクロールバーに適用する場合、以下の手順が必要となります。これは、スクロールバーは標準のフレームワークを利用しているため、InputMan のテーマテンプレートが適用されないためです。
<UserControl.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="/presentationframework.AeroLite;component/themes/aeroLite.normalcolor.xaml"/> <ResourceDictionary Source="/GrapeCity.WPF.InputMan.AeroLite;component/Themes/AeroLite.NormalColor.xaml"/> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </UserControl.Resources>
テーマを適用したコントロールに対してスタイルを設定するには、Style 要素を定義する際に、BasedOn プロパティを使用して、該当するコントロールに対してテーマ内で定義されているスタイルのキーを指定します。これにより、テーマ内で定義されているスタイルを保持しつつ、特定のスタイル要素をカスタマイズすることができます。
それぞれのコントロールに対するスタイルキーは以下の通りです。
コントロール | スタイルキーの値 |
---|---|
GcComboBox | GcComboBox_StyleKey |
GcComboBox | ComboDropDownWindow_StyleKey |
GcDropDownCalculator | GcDropDownCalculator_StyleKey |
GcDropDownCalendar | GcDropDownCalendar_StyleKey |
GcDateTime | GcDateTime_StyleKey |
GcListBox | GcListBox_StyleKey |
GcListBox | ListHeader_StyleKey |
GcListBox | SubItem_StyleKey |
GcListBox | ListItem_StyleKey |
GcListBox | ListItemBase_StyleKey |
GcMask | GcMask_StyleKey |
GcNumber | GcNumber_StyleKey |
GcTextBox | GcTextBox_StyleKey |
以下のサンプルコードは、BasedOn プロパティを使用してスタイルキーを指定した場合と指定しなかった場合の表示の違いを示します。このサンプルコードでは3つの GcDateTime を表示し、それぞれスタイル設定なし、BasedOn プロパティを使用せずにスタイルを設定、BasedOn プロパティを使用してスタイルを設定した結果を示しています。
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center"> <StackPanel.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="/GrapeCity.WPF.InputMan.ExpressionDark;component/Themes/ExpressionDark.xaml"/> <ResourceDictionary> <Style x:Key="Style1" TargetType="im:GcDateTime"> <Setter Property="Foreground" Value="Red" /> </Style> <Style x:Key="Style2" TargetType="im:GcDateTime" BasedOn="{StaticResource GcDateTime_StyleKey}"> <Setter Property="Foreground" Value="Red" /> </Style> </ResourceDictionary> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </StackPanel.Resources> <im:GcDateTime /> <im:GcDateTime Style="{StaticResource Style1}" /> <im:GcDateTime Style="{StaticResource Style2}" /> </StackPanel>