バージョン

AssemblyResourceSetLoader クラスの作成

このトピックは複数部から構成される詳細なガイドの第 4 部で、 「スタイル グループの ResourceDictionary ファイルの作成」の続きです。このトピックは、各スタイル グループの ResourceSet を AssemblyResourceSetLoader クラスに登録する方法を説明します。このオブジェクトは ResourceSets を登録し、テーマパックのアセンブリがプロジェクトで参照される時にロードします。

  1. ソリューション エクスプローラで MyThemePack プロジェクトを右クラスし、ポップアップ メニューで、[追加] をクリックし、次にサブメニューで [クラス] をクリックします。

  2. [新しい項目を追加] ダイアログ ボックスで、クラス名を "ThemesOrangePeelAssemblyResourceSetLoader" に設定します。[追加] をクリックします。

  3. コードの記述を開始する前にクラス ファイルの一番上に using/Imports のディレクティブを配置します。そうすれば、メンバは完全に記述された名前を常に入力する必要がなくなります。

Visual Basic の場合:

Imports Infragistics.Windows
Imports Infragistics.Windows.Themes

C# の場合:

using Infragistics.Windows;
using Infragistics.Windows.Themes;
  1. デフォルトの名前空間を "MyThemePack.ResourceSets.OrangePeel" に変更します。

  2. このクラスは、AssemblyResourceSetLoader クラスから派生します。

Visual Basic の場合:

Public Class ThemesOrangePeelAssemblyResourceSetLoader
	Inherits AssemblyResourceSetLoader
	...
End Class

C# の場合:

class ThemesOrangePeelAssemblyResourceSetLoader : AssemblyResourceSetLoader
{
	...
}
  1. AssemblyResourceSetLoader クラスから派生するクラスは、OnRegisterResourceSets メソッドをオーバーライドする必要があります。

Visual Basic の場合:

...
Protected Overloads Overrides Sub OnRegisterResourceSets(ByVal groupingName As String)
	...
End Sub
...

C# の場合:

...
protected override void OnRegisterResourceSets(string groupingName)
{
	...
}
...
  1. スタイル グループのクラス ファイルで作成された Instance メソッドを使用して、OnRegisterResourceSets メソッドでスタイル グループを登録します。以下のコードは Instance を AssemblyResourceSetLoader に登録します。

Visual Basic の場合:

...
If groupingName Is Nothing Then
	'ThemesOrangePeelAssemblyResourceSetLoader.RegisterResourceSet(OrangePeel.Primitives.Instance);
	'ThemesOrangePeelAssemblyResourceSetLoader.RegisterResourceSet(OrangePeel.Editors.Instance);
    ThemesOrangePeelAssemblyResourceSetLoader.RegisterResourceSet(OrangePeel.DataPresenter.Instance)
Else
    Select Case groupingName
        Case "Primitives"
			'ThemesOrangePeelAssemblyResourceSetLoader.RegisterResourceSet(OrangePeel.Primitives.Instance);
			Exit Select
        Case "DataPresenter"
         	ThemesOrangePeelAssemblyResourceSetLoader.RegisterResourceSet(OrangePeel.DataPresenter.Instance)
            Exit Select
        Case "Editors"
			'ThemesOrangePeelAssemblyResourceSetLoader.RegisterResourceSet(OrangePeel.Editors.Instance);
          	Exit Select
    End Select
End If
...

C# の場合:

...
if (groupingName == null)
{
	//ThemesOrangePeelAssemblyResourceSetLoader.RegisterResourceSet(OrangePeel.Primitives.Instance);
	//ThemesOrangePeelAssemblyResourceSetLoader.RegisterResourceSet(OrangePeel.Editors.Instance);
	ThemesOrangePeelAssemblyResourceSetLoader.RegisterResourceSet(OrangePeel.DataPresenter.Instance);
}
else
{
	switch (groupingName)
	{
		case "Primitives":
			//ThemesOrangePeelAssemblyResourceSetLoader.RegisterResourceSet(OrangePeel.Primitives.Instance);
			break;
		case "DataPresenter":
			ThemesOrangePeelAssemblyResourceSetLoader.RegisterResourceSet(OrangePeel.DataPresenter.Instance);
			break;
		case "Editors":
			//ThemesOrangePeelAssemblyResourceSetLoader.RegisterResourceSet(OrangePeel.Editors.Instance);
			break;
	}
}
...

テーマパックの作成の最後の手順は、AssemblyInfo ファイルの修正です。「AssemblyInfo ファイルの修正」でこれらの修正について学習します。