Imports System.ComponentModel Imports System.Reflection Imports Infragistics.Windows Imports Infragistics.Windows.Themes
This topic is second in a multi-part walkthrough. Refer to Creating and Setting Up a ThemePack Project for information on setting up the Microsoft® Visual Studio® 2008 project. In this topic, you will create the style group’s class file.
In the "MyThemePack" project, right click on the DataPresenter folder under ResourceSets. In the pop-up menu, click Add, then click Class.
In the Add New Item dialog box, name the class file "DataPresenter_ResourceSets" and click Add.
Change the name of the class (not the class file) from "DataPresenter_ResourceSets" to "DataPresenter." Place the public (Public in Visual Basic) keyword before the class keyword.
Change the class' namespace from "MyThemePack.ResourceSets.DataPresenter" to "MyThemePack.ResourceSets.OrangePeel."
Before you start writing any code, you should place using/Imports directives at the top of your class file so you don’t need to always type out a member’s fully qualified name.
In Visual Basic:
Imports System.ComponentModel Imports System.Reflection Imports Infragistics.Windows Imports Infragistics.Windows.Themes
In C#:
using System.ComponentModel; using System.Reflection; using Infragistics.Windows; using Infragistics.Windows.Themes;
The DataPresenter class derives from DataPresenterResourceSet. The ResourceSet that you derive from depends upon the style group (i.e., if you were creating the ResourceSet for the Editors, you would derive from EditorsResourceSet).
In Visual Basic:
Public Class DataPresenter Inherits DataPresenterResourceSet(Of Locator) ... End Class
In C#:
public class DataPresenter : DataPresenterResourceSet<Locator> { ... }
Create a static variable that is an instance of the DataPresenter class and provide a static method that accesses the static instance. This makes sure that there is only one instance of this style’s DataPresenterResourceSet at all times.
In 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 ...
In C#:
... private static DataPresenter g_Instance; public static DataPresenter Instance { get { if (g_Instance == null) g_Instance = new DataPresenter(); return g_Instance; } } ...
A style group’s class file must contain a Locator class. The Locator class derives from ResourceSetLocator and defines key properties such as:
access to the Assembly containing the resource set
the Theme or name of the style
the Grouping, which is specific to the style group
the ResourcePath to the embedded ResourceDictionary for the style group within the assembly
In 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 ...
In 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"; } } } ...
The file the ResourcePath is set to is created in the Creating a Style Group’s ResourceDictionary Files.