Implements a sample implementation for using Highlightings with different (Light/Dark) WPF themes
This AvalonEdit extension implements its own highlighting manager that extends the classic way of handling highlighting definitions (see also Dirkster99/AvalonEdit-Samples).
The inital release contains 5 highlighting themes:
- Dark
- Light
- True Blue-Light
- True Blue-Dark
- VS 2019-Dark
but you can easily define more themes. Just create a pull request with the XSHTD file at this site.
The standard highlighting in AvalonEdit is dependent on the currently viewed type of text (eg C# or SQL), but a highlighting definition designed for a Light WPF theme may look ugly if viewed with a Dark WPF theme, and vice versa. This is why the ThemedHighlightingManager extension associates each highlighting definition with:
- A WPF Theme (Light, Dark) and
- A type of text (C#, SQL etc)
This approach is very similar to the implementation in Notepad++ except Notepad++ uses a plain xml file to configure a highlighting theme whereas the ThemedHighlightingManager uses an XSHTD file to do the same. But at the end of the day, its XML in both projects, and cloning a highlighting theme from Notepad++ is almost too easy (thats how similar both implementations are).
Assuming that an application already use a WPF theming/management library, such as:
- MahApps.Metro,
- MLib, or
- MUI
enables an applications author to switch highlighting definitions to a matching color palette whenever the user switches a given WPF theme. See AvalonEdit-Samples and Ähnlich for detailed sample implementations.
A WPF theme is a way of styling and theming WPF controls. This is usually implemented in a seperate library, such as:
- MahApps.Metro,
- MLib, or
- MUI
and takes advantage of WPFs way of defining and using themes ('Dark', 'Light', 'True Blue'...) with XAML resources etc.
A Generic highlighting theme is a classic collection of AvalonEdit V2 highlighting definitions (collection of xshd files). In this project, there is only one such theme, the 'Light' highlighting theme. This theme is defined in a classic collection of xshd resource files at HL.Resources.Light.
A derived highlighting theme is a highlighting theme that makes use of a Generic Highlighting Theme and overwrites formattings defined in named colors by incorporating an additional xshtd file.
This approach re-uses the highlighting patterns of the generic theme but applies different colors and formattings to better support:
- different background colors of different WPF themes or
- different taste towards different color schemes by different users
This project has multiple derived highlighting themes
- 'Dark'
- 'True Blue'
- 'VS 2019 Dark'
which are based on the highlighting patterns of the 'Light' generic highlighting theme.
More demo projects may be listed at the AvalonEdit's Wiki page