Work on the WPF Controls 2020.1 version has begun. This version is going to have large updates to our themes system. Our goal is to focus on modern designs, allowing you to easily customize and personalize the themes used for your WPF applications. We have a lot of ideas that we're excited to work on and will be sharing over the coming months on the blog.
As we dive into this effort, we are removing old system themes that aren't really needed any more. For instance, "Classic" themes haven't been available as an option in Windows 10 for some time. "Luna" (Windows XP) themes are for an operating system that went end-of-life many years ago.
Similarly, Windows 7 is going end-of-life around the end of 2019 and Offce 2010 went mainstream end-of-life in 2015.
We are strongly considering dropping the Aero and Office 2010 themes so that we can slim down our product assemblies and focus on more current-era "modern" theming. Rest assured, what we have planned for modern themes will allow for a high degree of customization and ease-of-use.
We've created a Twitter poll so that you can share your thoughts on dropping Aero and Aero-like Office 2010 themes in our 2020.1 WPF Controls. We ask that you provide your opinion in this poll. If you would like to see them kept, please contact our support team with the reasons why.
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.
Following the massive SyntaxEditor vNext updates for the WPF platform that were released at the end of May, this past quarter we completed work on similar SyntaxEditor updates for the UWP platform and released them. Since then, we've been working on wrapping up SyntaxEditor vNext updates for the WinForms platform. These WinForms SyntaxEditor updates will finally bring the newer WPF SyntaxEditor API to the WinForms version, so that all three platforms can be kept fully in sync moving forward.
We used the new 2019.1 version of our UWP SyntaxEditor in a large update for our free Code Writer app. A WPF Controls maintenance release was also published.
What's Coming Next
The SyntaxEditor vNext updates for the WinForms platform are about code complete and are currently in beta testing. If you would like to help beta test, please contact our support team. We expect the final version to roll out in the next several weeks.
New WPF and UWP Controls maintenance releases should be out any day now.
Following all that, we will begin on new development in other areas. We have a lot of plans on updating our WPF themes for the 2020.1 version.
Code Writer v4.1 has been released to the Microsoft Store, containing a number of fixes for errors seen since the v4.0 release.
FIXED: Several errors that could cause crashes.
About Code Writer
Code Writer is a free text and code editing app, downloadable from the Microsoft Store, and is used by thousands of people each day. Version 4.x requires the Windows 10 Fall Creators Update (version 1709) or later.
Want to get the latest news about Code Writer? Follow our @CodeWriterApp Twitter account.
If you are a Universal Windows app developer, you can download a free evaluation of our Universal Windows Controls to use in your own apps. Code Writer makes use of our SyntaxEditor, Docking/MDI, PropertyGrid, and Editors controls. SyntaxEditor is of particular interest because it lets you add advanced code and text editing to your own apps.
We are pleased to announce the release of the 2019.1 version of our UWP 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.
This announcement post contains the detailed list of updates in the 2019.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 now required.
We also have published a maintenance release for the 2018.1 version. All of the updates are listed in this announcement post, and are included in the 2019.1 version codebase as well.
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 version of SyntaxEditor is already out and the WinForms version will follow later this year.
Text rendering is many times faster than in the previous versions, making an enormous leap forward in performance.
Text rendering now properly handles cultural editing concepts like complex glyphs, bi-directional text, etc.
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.
Carets now support movement at both the start and end of word wrapped lines.
Virtual space is now supported at the end of lines when a new option is enabled. Block selections can be made in virtual space at the end of lines, even without line end virtual space being enabled. This prevents the caret from snapping to an offset when making a block selection, which can sometimes be problematic.
Text drag and drop support has been added, allowing text to be quickly moved around the editor.
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.
The Metro Light and Metro Dark common image sets are now in vector form and render beautifully in high DPI.
Completion filters have been updated so when there are multiple active filters with the same ICompletionFilter.GroupName, any one of those filters can includes an item. Toggle button completion filters were changed to appear unchecked when they aren't active, which is more natural.
Ctrl Key Opacity Changes
The logic for making IntelliPrompt popups and the new search overlay pane semi-transparent when the Ctrl key is held has been refactored and improved. A brief delay was added before the opacity change occurs.
Splitting the editor to show two stacked views is now possible.
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.
Auto ScrollBar Visibility
The horizontal and vertical scrollbars now support an Auto visibility option that will only display then when necessary.
Editor views can be scrolled horizontally with Shift+MouseWheel
Better logic was implemented for managing horizontal scroll maximums, especially when scrolling vertically.
The vertical scrollbar accelerates its scrolling speed the longer you hold the up or down button.
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.
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 new optional ruler margin has been added.
The rendering of built-in indicator glyphs was improved.
The TextStylePreview control has been added that renders a highlighting style.
.NET Languages Add-on
IntelliPrompt completion list toggle button filters were added for the various kinds of items displayed in the list. The IntelliPrompt completion filter UI (toggle buttons and tabs) only shows based on the available items in the unfiltered list. For instance, if there are no types in the list, no 'Types' toggle button filter is visible.
Python Language Add-on
IntelliPrompt completion list toggle button filters were added for the various kinds of items displayed in the list. The IntelliPrompt completion filter UI (toggle buttons and tabs) only shows based on the available items in the unfiltered list. For instance, if there are no classes in the list, no 'Classes' toggle button filter is visible.
Web Languages Add-on
Full XML schema support, including validation and automated IntelliPrompt, has been added to the XML syntax language.