このトピックでは、Infragistics ThemeManager™ を使用して既存のコントロール テーマを拡張する方法について説明します。
このトピックを理解するために、以下のトピックを参照することをお勧めします。
以下の手順では、ThemeManager を使用して、xamTileManager の Office2013 のテーマを拡張します。
以下のスクリーンショットは最終結果のプレビューです。
以下は、xamTileManager の Office2013 テーマを拡張するための一般要件です。
NuGet パッケージの参照:
Infragistics.WPF.TileManager
Infragistics.WPF.Themes.Office2013
NuGet フィードのセットアップと NuGet パッケージの追加の詳細については、NuGet フィード ドキュメントを参照してください。
名前空間:
Infragistics® 名前空間への参照: (xmlns:ig="http://schemas.infragistics.com/xaml")
この手順を実行するには、以下が必要です。
ページがある Microsoft® Visual Studio® WPF プロジェクト
プロジェクトに追加した必要な NuGet パッケージ参照および名前空間 (要件を参照)
以下のテーマ リソースをプロジェクトに追加します。
以下はプロセスの概要です。
以下の手順では、変更された Office2013 テーマを拡張し xamTileManager コントロールに適用する方法を示します。
リソース ディレクトリへの xamTileManager のテーマの作成
詳細は、 ExtendedTheme.xamTileManager.xaml を参照してください。
Office2013Theme クラスから派生する拡張されたテーマ クラスの作成
Office2013Theme クラスから派生する、ExtendedOffice2013Theme という名前のクラスを作成します。
C# の場合:
public class ExtendedOffice2013Theme : Office2013Theme
{
// クラスの実装
}
Visual Basic の場合:
Public Class ExtendedOffice2013Theme Inherits Office2013Theme
' クラスの実装
End Class
拡張されたテーマ クラスの ConfigureControlMappings メソッドへの上書き
拡張されたテーマ クラスの ConfigureControlMappings メソッドを上書きします。
C# の場合:
protected override void ConfigureControlMappings()
{
// すべてのコントロールのマッピングを ConfigureControlMappings メソッドの基本実装
// への呼び出しを介してプリセットします
base.ConfigureControlMappings();
string assemblyFullName = typeof(ExtendedOffice2013Theme).Assembly.FullName;
// XamTileManager コントロールのマッピングをオーバーライドします
Mappings[ControlMappingKeys.XamTileManager] =
ThemeBase.BuildLocationString(assemblyFullName, @"/ExtendedTheme.xamTileManager.xaml");
}
Visual Basic の場合:
Protected Overrides Sub ConfigureControlMappings()
' すべてのコントロールのマッピングを ConfigureControlMappings メソッドの基本実装
' への呼び出しを介してプリセットします
MyBase.ConfigureControlMappings()
Dim assemblyFullName As String = GetType(ExtendedOffice2013Theme).Assembly.FullName
' XamTileManager コントロールのマッピングをオーバーライドします
Mappings(ControlMappingKeys.XamTileManager) = _
ThemeBase.BuildLocationString(assemblyFullName, "/ExtendedTheme.xamTileManager.xaml")
End Sub
拡張されたテーマのコントロールへの適用
拡張されたテーマをコントロールに適用します。
XAML の場合:
<Grid>
<ig:ThemeManager.Theme>
<extendedTheme:ExtendedOffice2013Theme />
</ig:ThemeManager.Theme>
<ig:XamTileManager>
<ig:XamTile Header="TILE 1"
IsMaximized="True" />
<ig:XamTile Header="TILE 2" />
<ig:XamTile Header="TILE 3" />
<ig:XamTile Header="TILE 4" />
</ig:XamTileManager>
</Grid>
以下は、この手順の完全なコードです。
ウィンドウの XAML コード
XAML の場合:
<Grid>
<ig:ThemeManager.Theme>
<extendedTheme:ExtendedOffice2013Theme />
</ig:ThemeManager.Theme>
<ig:XamTileManager>
<ig:XamTile Header="TILE 1"
IsMaximized="True" />
<ig:XamTile Header="TILE 2" />
<ig:XamTile Header="TILE 3" />
<ig:XamTile Header="TILE 4" />
</ig:XamTileManager>
</Grid>
ExtendedOffice2013Theme.cs
C# の場合:
public class ExtendedOffice2013Theme : Office2013Theme
{
protected override void ConfigureControlMappings()
{
// すべてのコントロールのマッピングを ConfigureControlMappings メソッドの基本実装
// への呼び出しを介してプリセットします
base.ConfigureControlMappings();
string assemblyFullName = typeof(ExtendedOffice2013Theme).Assembly.FullName;
// XamTileManager コントロールのマッピングをオーバーライドします
Mappings[ControlMappingKeys.XamTileManager] =
ThemeBase.BuildLocationString(assemblyFullName, @"/ExtendedTheme.xamTileManager.xaml");
}
}
Visual Basic の場合:
Public Class ExtendedOffice2013Theme Inherits Office2013Theme
Protected Overrides Sub ConfigureControlMappings()
' すべてのコントロールのマッピングを ConfigureControlMappings メソッドの基本実装
' への呼び出しを介してプリセットします
MyBase.ConfigureControlMappings()
Dim assemblyFullName As String = GetType(ExtendedOffice2013Theme).Assembly.FullName
' XamTileManager コントロールのマッピングをオーバーライドします
Mappings(ControlMappingKeys.XamTileManager) = _
ThemeBase.BuildLocationString(assemblyFullName, "/ExtendedTheme.xamTileManager.xaml")
End Sub
End Class
このトピックの追加情報については、以下のトピックも合わせてご参照ください。