Themes are sets of properties and colors for each control. They define style and appearance of controls in Dapfor library. In addition to properties and cooler themes contain code for specific painting of various control elements (including .Net Grid).
The grid supports attachment of themes via Grid.Theme property. Dapfor's library contains several predefined themes such as Theme.XPStyle, Theme.Silver, etc. The list of predefined themes is stored in Dapfor.Net.Theming.KnownTheme enumeration. Accordingly, theme object can be obtained with the following code.
C# | Copy |
---|---|
grid1.Theme = Theme.XPStyle; grid2.Theme = Theme.FromKnownTheme(KnownTheme.XPStyle); |
A programmer may also create his own themes, including those based on already existing themes. The example below demonstrates creation of an arbitrary theme on the basis of an existing theme. Therefore, all grids using the same theme shall look in the same way.
C# | Copy |
---|---|
Theme myTheme = new Theme("MyTheme", Theme.Silver); myTheme.Renderers.GridRenderer.Appearance.ColumnNormal.BackColor = Color.LightPink; myTheme.Renderers.GridRenderer.Appearance.ColumnNormal.GradientEndBackColor = ControlPaint.Dark(Color.LightPink); grid.Theme = myTheme; |
Dapfor’s library provides a convenient API for theme changing. For this purpose it uses a special default theme that is returned by Theme.Default property. If a grid uses this theme, it subscribes to Theme.DefaultThemeChanged events. Therefore, when a new theme is set in Theme.Default property, all controls subscribed to this theme shall receive notifications and automatically change their appearance.
C# | Copy |
---|---|
grid1.Theme = Theme.Default; grid2.Theme = Theme.Default; Theme myTheme = new Theme("MyTheme", Theme.Silver); Theme.Default = myTheme; |
Grid themes have been developed to enable the programmer to change appearance of any grid elements. When a theme is set for the grid, this grid uses colors and renderer defined for each theme. In addition to that a programmer may modify colors for headers, columns, rows etc using properties like Grid.Appearance, Header.Appearance, etc.