WPF WindowChrome Application Menu Overlays

by Avatar Bill Henning (Actipro) - 2 comments
Wednesday, January 22, 2020 at 9:51pm

Actipro WPF Controls v2020.1 development is in progress, and the new version’s main goals are to modernize our UI control features/themes, and make theme customization much easier.

We plan on making a lot of blog posts in the coming weeks to detail various features that will be shipping in the WPF Controls 2020.1 release.  The first several posts will focus on new features and functionality coming to our WindowChrome class.  Let’s dig in!

What is WindowChrome?

WindowChrome, which is included in the Shared Library, allows any WPF Window to have advanced chrome features.  In the past this has mostly related solely to providing a themed window that had a Metro, Office, or Aero-like appearance.  We have been working on refining our WindowChrome template, while adding an extensive new feature set that customers are going to love.

In today’s post, we’ll take a look at one of our favorite new WindowChrome demos, which shows the ability to create an animated full-window overlay similar to an Office-like Backstage.

WindowChrome Overlays

WindowChrome has a new MVVM-compatible overlay feature that allows custom content to be injected that overlays the entire window, including the title bar area. 

WindowChrome showing an application menu overlay

Best of all, several built-in animations are supported.  In the sample above, we slide and fade in the overlay for a pleasing user experience.  The animation doesn’t occur on machines without hardware acceleration.

This sample also shows how WindowChrome lets you optionally align the title bar text to the center, and how custom buttons can be injected into the title bar.  This sample has a Menu button on the left side of the title bar and a Help button on the right side.

An Office Colorful theme is in use, which makes use of an accent color in the title bar.  It’s easy to change to any other accent color, and we supply predefined colors that match Office apps.

As the overlay is displayed, we switch the title bar to an “alternate” title bar style that has a more traditional appearance.  We also hide the Menu title bar button and show a Back button in its place.

Summary

WindowChrome overlay features will be ship in the 2020.1 version and offer up all kinds of exciting possibilities for your apps.  Anything from a home screen to an Office-like Backstage can be implemented in the overlay.

In our next blog post, we’ll show another way to use overlays during time-consuming processing operations.

WPF Controls 2020.1 Themes Goals

by Avatar Bill Henning (Actipro) - 7 comments
Tuesday, December 10, 2019 at 6:54pm

Actipro WPF Controls v2020.1 development is in progress, and the new version’s main goals are to modernize our themes and make theme customization much easier.

In today’s post, I’d like to provide some high-level information on some of the updates.

Theme Generation Concept

When an Actipro theme is activated, hundreds of brush and other resources are loaded and used throughout all our Actipro and native control templates.  This allows our themes to provide a cohesive appearance throughout all controls in your app.  Our WPF Controls ship with over 25 professionally-desired themes that match system, Office, and Metro themes.

In v2019.1 and earlier, all these theme resources are pre-defined by us in large XAML files and customers can customize individual resources or tint groups of them.  While these themes look great, it can be tedious to customize them if you don’t like the out-of-the-box look.

A primary focus of the 2020.1 WPF Controls is to move from our previous pre-defined themes towards themes that are generated at run-time based on theme generator options you set.  For instance, a main setting is the theme intent, which can be White, Light, Dark, Black, or HighContrast.  This tells the theme generator how the theme is meant to be used in general.  Then various grayscale and color ramps are generated based on configurable options.  All the highlight colors are based on colors generated in the color ramps.  There are options for things like the corner radius of tabs, whether the title bar uses an accent color (like in Office colorful themes), etc.

We are currently prototyping out this concept and so far, it’s working very well.  We will provide some screenshots once we are further along.  Please post your ideas on what kinds of options you’d like to have configurable in the comments below, as that will help guide us.  Now is the time to think big!

Modernizing Control Appearances

We have numerous ideas for bringing more modern control appearances to our new WPF themes.  Some of these, such as menu item checkmark updates, involve changes to our core control templates, both for Actipro and native controls.  Other modernization features will be optionally activated via properties set when generating themes.

WindowChrome, which allows any WPF Window to have advanced chrome features, is also getting a lot of enhancements that will be described in a future post.  These updates provide new functionality that wasn’t available before.

With several older themes being removed and other modernization template changes being made, we are finding that some of the brush and other resources used in our WPF themes are no longer needed.  We are working on consolidating brush resources where possible and removing unnecessary resources.

Older Themes

Luna and Classic

As part of the themes updates, we are going to be removing several very old themes that are outdated at this point.  These include the Luna themes (Windows XP appearance) and Classic theme (based on system colors and hasn’t been available in Windows 10 for years).

Aero and Office 2010

In a previous post, we had asked for feedback on whether customers still use Aero and/or Office 2010 themes.  Aero theme provided the Windows 7/Vista appearance, but Windows 7 is going end-of-life this month by Microsoft.  Office 2010 went mainstream end-of-life in 2015. 

We received feedback from several customers who still wished to use those themes in the foreseeable future, and we will be retaining those themes as options.  They are being consolidated into a separate optional Themes.Aero assembly that you will be able to reference and register at app startup.  This will allow us to keep our Shared Library smaller while still allowing the pre-defined Aero-style themes to be available for customers who wish to use them.

Aero Glass

With Windows 7 going end-of-life, we are removing support for transparent Aero glass features in our WindowChrome.  But as mentioned above, the Aero theme will still be fully available.

Feedback

We’d love to hear your comments, especially what kinds of options you’d like to see on our theme generator. 

Twitter Poll on Modernizing WPF Themes

by Avatar Bill Henning (Actipro) - 13 comments
Monday, November 11, 2019 at 3:57pm

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.

Answer the Twitter Poll

Again, all the operating systems and Office versions that had these themes are imminently or are already end-of-life.  Thank you for your feedback!

SyntaxEditor for Universal Windows vNext Beta Testers Wanted

by Avatar Bill Henning (Actipro)
Friday, July 12, 2019 at 7:13pm

We are ready to begin beta testing of our Universal Windows version of SyntaxEditor that contains all the updates for our vNext project.

SyntaxEditor for UWP, editing a Python document with the Python Language Add-on

Beta testers will get a first look at all the new features and can give us feedback prior to a final official release.

Beta Testers

We are looking for beta testers who:

  • Will actively use supplied preview builds to help ensure the beta is stable.
  • Will report suggestions for improvement of new features.
  • Will report any bugs that are encountered.
  • Ideally is signed up in our Slack workspace, as it’s easiest to communicate through that during testing phases.

Please contact our support team privately via a ticket to sign up for beta testing:

Contact Our Support Team to Sign Up

Please indicate the following in your message:

  • Your name and e-mail address.
  • If you are already an existing customer, and which syntax language(s) you currently use.
  • The platform(s) you’d like to test (Universal Windows).
  • If you are already signed up in our Slack workspace.

Thanks for your help and we look forward to working with our testers.

Thanks for your help and we look forward to working with our testers.

The SyntaxEditor vNext work is already launched in the v2019.1 SyntaxEditor for WPF release, and is coming to the SyntaxEditor for UWP as part of this beta, followed by SyntaxEditor for WinForms.

Moving WPF Controls to .NET Framework 4.6.1 and .NET Core 3.0

by Avatar Bill Henning (Actipro) - 10 comments
Monday, May 6, 2019 at 1:31pm

Our WPF SyntaxEditor vNext beta began a week ago and has been going well.  As we prepare for a 2019.1 version release, we are looking at making some other moves and wanted to get your feedback on them.  First, let’s dig into some low-level .NET details to set up the background.

About .NET Core 3.0

.NET Core 3.0 is a newer, cross-platform, open source variation containing much of what is in the .NET Framework.  It is still in preview with release date later this year, but is already much faster and more light-weight.  Microsoft has been ensuring that it is capable of supporting Windows desktop development platforms like WPF and WinForms, and they have been updating Visual Studio to support desktop app development based on .NET Core 3.0.  It also allows you to introduce newer Windows 10 APIs in desktop apps and host XAML islands (UWP controls).  Further, .NET Framework 4.8 is intended to be the final version of that framework, with .NET Core as the migration path moving forward.  More news in this area is sure to come in this week’s Build 2019 conference.

Moving to .NET Core 3.0

We’ve had numerous customers ask about moving our WPF Controls to .NET Core 3.0.  A near-term goal for us is to ship native .NET Core 3.0 variations of our WPF Control assemblies as option, while still shipping .NET Framework-based variations.

On a side note, the existing WPF Control assemblies can already be used within .NET Core 3.0 applications.  They are based on .NET Framework-only but are portable, and will work in .NET Core 3.0 applications.

What is .NET Standard?

This is where things get a bit more complex.  .NET Framework is the base set of .NET APIs we have been using ever since .NET began.  .NET Standard was more recently created as an API contract of sorts where a framework that implements a certain .NET Standard version guarantees that it supports a certain set of .NET APIs.   

Think of .NET Standard like a set of interfaces and .NET Framework like a set of classes that implement those interfaces.  Thus, more recent .NET Framework versions implement .NET Standard.

Microsoft's .NET Core diagram

.NET Core is simply another implementation of .NET Standard.  Since the API implementation surface area is now about the same between .NET Core and .NET Framework, it’s a good time to consider moving to .NET Core for future work. 

.NET Framework 4.6.1

The 4.6.1 version of the .NET Framework is now mature, as it was released at the end of 2015 and requires Visual Studio 2015 or later for development.  It supports .NET Standard 2.0.

Back on Framework Updates

Both .NET Core 3.0 and .NET Framework 4.6.1 implement .NET Standard 2.0, which is the minimum set of APIs a number of our WPF Controls and SyntaxEditor text/parsing assemblies require.

One option we’ve been considering is:

  • Moving some of our non-UI class libraries like the various SyntaxEditor text assemblies that have no WPF references to be .NET Standard 2.0 class libraries. This would enable them to work in .NET Framework, .NET Core, Mono, etc… basically any framework implementing .NET Standard 2.0.
  • Continuing to ship .NET Framework versions of the WPF Control assemblies, but making their minimum target .NET 4.6.1, compared to the current .NET 4.0 minimum target. The .NET 4.6.1 version is needed to support references to .NET Standard 2.0 assemblies mentioned in the previous bullet, and would require you to target .NET 4.6.1 or later in your .NET Framework-based applications.
  • Adding .NET Core 3.0 versions of the WPF Control assemblies, so there is zero .NET Framework dependency for customers who wish to go purely to .NET Core 3.0.

A Twitter Poll

Please answer our Twitter poll as to whether you would support the changes mentioned above or not.  If not, please indicate in the comments below or in the Twitter poll why.

Answer Our Twitter Poll

WPF SyntaxEditor vNext Beta

And as we close out this blog post, if any other WPF Controls customers would like to participate in the WPF SyntaxEditor vNext beta, please contact our support team.