MESCIUS InputMan for WPF 3.0J
テーマテンプレートを適用する

テーマテンプレートはリソースファイルアセンブリ(*.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 の各コントロールに対してこれらのテーマテンプレートを適用するには、以下の手順にしたがって使用するテーマテンプレートを設定します。

  1. ソリューションエクスプローラでプロジェクトノードあるいは「参照設定」ノードを右クリックし、コンテキストメニューから「参照の追加」を選択します。
  2. 「参照の追加」ダイアログボックスで、使用するテーマテンプレートのリソースファイルアセンブリを見つけて選択し、OK ボタンをクリックしてプロジェクトに参照を追加します。
  3. UserControl あるいは 特定のコンテナコントロールのリソースディクショナリに、テーマテンプレートのリソースを読み込みます。Source プロパティに指定する URI 形式は「/assemblyShortName;component/(上記のリソース位置を記載)」となります。

以下のサンプルコードは UserControl の Resources 内に BureauBlue テーマテンプレートのリソースを追加する例です。

<UserControl.Resources>
  <ResourceDictionary Source="/GrapeCity.WPF.InputMan.BureauBlue;component/Themes/BureauBlue.xaml"/>
</UserControl.Resources>

テーマテンプレートを特定のコンテナのリソースとして指定すると、コンテナ上に配置されたコントロールに対してのみテーマが適用されます。これにより、複数のテーマテンプレートを同一ページ上で使用することができます。

AeroLite の適用について

AeroLite をコンボコントロールあるいはリストコントロールのスクロールバーに適用する場合、以下の手順が必要となります。これは、スクロールバーは標準のフレームワークを利用しているため、InputMan のテーマテンプレートが適用されないためです。

  • presentationframework.AeroLite.dll を参照設定に追加する。
  • リソースディクショナリに、presentationframework.AeroLite のリソースを読み込みます。
    <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>

上記サンプルコードの実行結果
(図):上記サンプルコードの実行結果

関連トピック

 

 


© MESCIUS inc. All rights reserved.