We are pleased to announce the release of the 2020.1 version of our UWP Controls.
This announcement post contains the detailed list of updates in the 2020.1 version. Please be aware that Windows 10 Fall Creators Update (version 1709) or later and usage of the Microsoft's free 'Win2D.uwp' NuGet package are required.
While the version includes a wide number of small updates and bug fixes, let’s take a look at a handful of the larger updates.
AutoCompleteBox now has a SelectedItemChanged event and an InputMode property, that alters input behavior. Search mode is the default and is intended for usage when the control is providing search-like functionality, commonly seen in application title bars. ComboBox mode is an alternate mode intended for use when the control should be used in more traditional ComboBox-like scenarios. When in ComboBox mode, the popup list filter turns off when not typing in the control, allowing the entire list to be browsed when interacting with the control purely via the popup.
BrushEditBox and ColorEditBox now have a HasText property that allows you to hide the text portion of the edit box for a swatch-only display.
Dates and Times
DateEditBox and TimeEditBox now accept delimiter-less input for several additional custom formats.
Large Incremental Changes
Numeric edit boxes now support large incremental changes when holding Shift while pressing Up/Down or rotating the mouse wheel.
Custom Format Strings
Several numeric edit boxes now support custom format strings with semi-colon conditional format specifiers.
We've added a PropertyGrid.RequestRefresh method that can be called to tell the PropertyGrid to refresh its contents.
Search Overlay Pane
A new background renders the search range when the search overlay pane is in Selection scope mode.
A new property allows you to disable key bindings that would activate the search overlay pane, which is useful if you have an external search UI.
Logic related the selection scope searching has been improved.
Ctrl+Enter can be pressed to execute a Find All search operation when the Find textbox has focus and the find all button is visible.
New methods allow completion list items to be added much faster, dramatically improving performance.
The tab overflow menu now places a checkmark by the currently-selected tab.
AutoCompleteBox Input Modes
A new AutoCompleteBox input mode property has been added that determines how the control behaves. Search mode is intended for usage when the control is providing search-like functionality, commonly seen in application title bars.
ComboBox mode is an alternate mode intended for use when the control should be used in more traditional ComboBox-like scenarios, where an items source is bound and the user should be able to easily choose an item from the list of items. A big difference between the modes is that when in ComboBox mode, the popup list filter turns off when not typing in the control. This allows the entire list to be browsed when interacting with the control purely via the popup.
Edit Box Large Incremental Changes
Numeric edit boxes now support large incremental changes when holding Shift while pressing Up/Down, using the spinner, or rotating the mouse wheel.
Edit Box Conditional Format Strings
Several numeric edit boxes now support custom format strings with semi-colon conditional format specifiers.
PropertyGrid API Improvements
A PropertyGrid.RequestRefresh method has been added, which requests that the property grid refresh its contents.
A PropertyDescriptorPropertyModel.PropertyDescriptor property has been added, which returns the PropertyDescriptor used in that particular property model.
Selection Scope Search Ranges
When using the search overlay pane, a new text background renders over the search range if in Selection scope mode. Logic related to Selection scope search range has been refactored and improved.
Search Overlay Pane Hotkeys
A new property can determine if built-in hotkeys are supported that can activate for the search overlay pane. Turn this feature off when external search UI is used.
Completion Item Performance
Completion list item-adding performance has been dramatically improved when using new batch features. All add-ons take advantage of the new features.
WindowChrome’s startup logic has been streamlined to reduce Win32 calls, and help prevent against rendering issues.
We are pleased to announce the release of the 2020.1 version of our WinForms Controls. This version includes the massive SyntaxEditor enhancements and updates we’ve been working on that have previously been described as “SyntaxEditor vNext” in the blog, and moves the older WinForms SyntaxEditor API to the same codebase already used by the WPF and UWP SyntaxEditor versions. This change brings a number of new features to the WinForms SyntaxEditor (including some huge premium add-on language updates) and will allow us to keep all three SyntaxEditor platform implementations in sync as new features are added in the future.
Let’s dig in and see a handful of the larger SyntaxEditor updates.
The internals of SyntaxEditor have been heavily refactored to support a cross-platform API across the WPF, UWP, and WinForms platforms. This allows SyntaxEditor features for the three platforms to be kept in sync moving forward. The 2019.1 WPF and UWP versions of SyntaxEditor already have this codebase in place.
Carets and Selection
Multiple selections, each with their own caret, are now supported. A new selection can be added by holding the Ctrl key when clicking in the text area or clicking on the selection or line number margins. Most edit actions have been refactored to fully support multiple selections. For instance, pressing Shift+Right Arrow will extend all of the selections by one character.
Copying text from multiple selections unions the selected text, joining each range's text with a line terminator. Pasting multi-line text into a view with the same number of selections as text lines being pasted will replace each selection with a related line from the pasted text.
Touch Selection Grippers
Selection grippers will show for the primary selection when touch input is used.
Carets now support movement at both the start and end of word wrapped lines.
Search Overlay Pane
A new search overlay pane displays over the upper-right of the active editor view when Ctrl+F (find mode) or Ctrl+H (replace mode) are pressed in a multi-line editor. A toggle mode button on the search overlay pane switches between find and replace modes, and all common search options are supported via toggle buttons and other controls. The search overlay pane can be closed by clicking the X button or by pressing Esc.
Ctrl+F3 will open the search overlay pane without focusing it, and will search forward for the currently-selected text. Ctrl+Shift+F3 will do the same but will search backwards.
F3 will search for the next match of the previously-used search options. Shift+F3 will search for the previous match of the previously-used search options.
If the SyntaxEditor.IsSearchResultHighlightingEnabled property is true, the search results can be highlighted while the search overlay pane is open. Closing the search overlay pane, clears the search result highlights.
Metro Light and Metro Dark common image sets are now included as options instead of the existing Classic common image set.
Completion Match Highlights
As text is typed while a completion list is open, the text in each item that matches the typed text is highlighted.
An auto-shrink filter is now available that can optionally trim down the items in the completion list based on typed text.
Other filters can be added to completion lists, rendering as toggle buttons or even tabs.
Various completion list item matchers and match options have been added, that allow for special item matching logic to be injected. Numerous built-in item matchers are available such as starts-with, acronym, shorthand, etc.
Quick Info and Parameter Info
The quick info and parameter info tips have been updated to use the current editor background and syntax highlighting colors.
The scrollbar splitter button now has a larger appearance.
The view splitter can be dragged to the bottom of the view to remove the split and keep the top view.
Scrolling and Zooming
Smooth inertia-based touch scrolling has been added.
Editor views can be scrolled horizontally with Shift+MouseWheel
Better logic was implemented for managing horizontal scroll maximums, especially when scrolling vertically.
New programmatic scroll methods were added that allow for aligning an anchor line to the top/center/bottom of a view with a specified pixel displacement, or scrolling by pixels.
The vertical scrollbar accelerates its scrolling speed the longer you hold the up or down button.
Line Number Customization
A new line number provider language service was added that allows for complete customization of how line numbers are rendered in the line number margin. In addition, a property was added to the document that sets the line number for the first line in the document, defaulting to one.
A optional new ruler margin was added that is useful for column display when working with fixed-width fonts.
Outlining Margin Highlights
Highlights render over contained lines when hovering over an outlining node in the outlining margin.
Line Modification Marks
Line modification marks now have improved logic that better tracks unsaved, saves, and reverted changes.
The rendering of built-in indicator glyphs was improved.
Options for delimiter (bracket) auto-complete and delimiter highlighting are available when delimiter-related language services are registered on the syntax language.
Added support for triple-clicks to select an entire view line. Dragging the pointer on the final click will extend the selection by view line.
Text rendering now properly handles cultural editing concepts like complex glyphs, bi-directional text, etc.
.NET Languages Add-on
The C# parser and resolver were updated to support C# 7.3 syntax, and the VB parser and resolver were updated to support VB 15.8 syntax. Much-improved resolver logic is now present that is far more accurate than in previous versions.
The IntelliPrompt completion list now shows toggle button filters for the various kinds of items displayed in the list.
Web Languages Add-on
Python Language Add-on
This new add-on implements an advanced syntax language for the Python language.
Almost 100 Samples
We've added so many SyntaxEditor samples to this new version that we had to create a brand new Sample Browser app design to support them all!
Our v2019.1 WPF and Universal Windows controls have been updated with new maintenance releases that are now ready for download. There were a number of minor enhancements and bug fixes made across various products.
See the announcement posts for the detailed list of enhancements and updates:
The C# parser and resolver have been updated to support C# 7.3 syntax. Likewise, the VB parser and resolver have been updated to support VB 15.8 syntax. These enhancements allow SyntaxEditor's syntax checker and IntelliPrompt engine to work with recently-added C# and VB language features.
Triple-clicks now selects an entire view line. Dragging the pointer on the final click will extend the selection by view line.
Editor view searching and search result highlighting logic was improved, including offloading some pieces to worker tasks for better performance.
The search overlay pane's textbox now displays a red border when no match for the find text is located.
Object Name Sorting
The name sort logic for shell objects now uses a natural sorting algorithm, where digits in the names are considered as numerical content rather than text. This behavior matches Windows' own sorting logic.
PropertyGrid DataObject Clearing
We added a new section to the PropertyGrid documentation that talks about best practices for clearing the DataObject property when the PropertyGrid is no longer needed to prevent memory leaks. We improved some of our own internal logic in how we watch for property value changes to help prevent memory leaks regardless. A PropertyGrid.CanClearDataObjectOnUnload property was also added that can be set to true to automatically clear the DataObject property when the control is unloaded.
VS 2019 Designer Functionality (UWP)
The original 2019.1 version of the UWP Controls changed the minimum Windows 10 target version to the Fall Creators Update. This change indirectly triggered a different set of designer functionality APIs in VS 2019 that are breaking changes from the old ones. This new UWP Controls maintenance release updates our designer functionality to be based on the newer APIs.