Imports System.ComponentModel Imports System.Reflection Imports Infragistics.Windows Imports Infragistics.Windows.Themes
このトピックは複数部から構成される詳細なガイドの第 2 部です。Microsoft® Visual Studio® 2008 プロジェクトの設定についての詳細は、 テーマパック プロジェクトの作成と設定を参照してください。このトピックでは、スタイル グループのクラス ファイルを作成します。
"MyThemePack" プロジェクトで、ResourceSets の下にある DataPresenter フォルダを右クリックします。ポップアップ メニューで、[追加] をクリックし、次に [クラス] をクリックします。
[新しい項目の追加] ダイアログ ボックスで、クラス名を "DataPresenter_ResourceSets" に設定し、[追加] をクリックします。
クラス(クラス ファイルではなく)の名前を、"DataPresenter_ResourceSets" から "DataPresenter" に変更します。class キーワードの前に public(Visual Basic では Public )キーワードを配置します。
クラスの名前空間を、"MyThemePack.ResourceSets.DataPresenter" から "MyThemePack.ResourceSets.OrangePeel" に変更します。
コードの記述を開始する前にクラス ファイルの一番上に using/Imports のディレクティブを配置します。そうすれば、メンバは完全に記述された名前を常に入力する必要がなくなります。
Visual Basic の場合:
Imports System.ComponentModel Imports System.Reflection Imports Infragistics.Windows Imports Infragistics.Windows.Themes
C# の場合:
using System.ComponentModel; using System.Reflection; using Infragistics.Windows; using Infragistics.Windows.Themes;
DataPresenter クラスは DataPresenterResourceSet から派生します。派生する ResourceSet は、スタイル グループに依存します(つまり Editors のための ResourceSet を作成している場合には、 EditorsResourceSet から派生します)。
Visual Basic の場合:
Public Class DataPresenter Inherits DataPresenterResourceSet(Of Locator) ... End Class
C# の場合:
public class DataPresenter : DataPresenterResourceSet<Locator> { ... }
DataPresenter クラスのインスタンスである静的な変数を作成し、静的なインスタンスにアクセスする静的なメソッドを提供します。これによって、このスタイルの DataPresenterResourceSet のインスタンスが常にひとつしかないことが保証されます。
Visual Basic の場合:
... Private Shared g_Instance As DataPresenter Public Shared ReadOnly Property Instance() As DataPresenter Get If g_Instance Is Nothing Then g_Instance = New DataPresenter() End If Return g_Instance End Get End Property ...
C# の場合:
... private static DataPresenter g_Instance; public static DataPresenter Instance { get { if (g_Instance == null) g_Instance = new DataPresenter(); return g_Instance; } } ...
スタイルのグループのクラス ファイルには Locator クラスが含まれる必要があります。Locator クラスは、 ResourceSetLocator から派生し、以下のような主要なプロパティを定義します。
リソース セットを含む Assembly へのアクセス
Theme またはスタイルの名前
Grouping、これはスタイル グループ固有
アセンブリ内のスタイル グループの埋め込みの ResourceDictionary への ResourcePath
Visual Basic の場合:
... Public Class Locator Inherits ResourceSetLocator Public Overrides ReadOnly Property [Assembly]() As [Assembly] Get Return Me.GetType().Assembly End Get End Property Public Overrides ReadOnly Property Theme() As String Get Return "OrangePeel" End Get End Property Public Overrides ReadOnly Property Grouping() As String Get Return DataPresenterGeneric.Instance.Grouping End Get End Property Public Overrides ReadOnly Property ResourcePath() As String Get Return "ResourceSets\DataPresenter\DataPresenter.xaml" End Get End Property End Class ...
C# の場合:
... [EditorBrowsable(EditorBrowsableState.Never)] public class Locator : ResourceSetLocator { public override Assembly Assembly { get { return this.GetType().Assembly; } } public override string Theme { get { return "OrangePeel"; } } public override string Grouping { get { return DataPresenterGeneric.Instance.Grouping; } } public override string ResourcePath { get { return @"ResourceSets\DataPresenter\DataPresenter.xaml"; } } } ...
ResourcePath が設定されるファイルは、 スタイル グループの ResourceDictionary ファイルの作成で作成されます。