Subscribe (RSS)

Quick Links

About Actipro

Actipro Software has been creating .NET user interface control products for Windows Forms since its inception. More recently, Actipro has become a pioneer in the .NET 3.0 WPF control development arena.

PropertyGrid for WPF nested categories

by Bill Henning (Actipro) July 7, 2010 at 01:58

Yesterday we posted information on performance enhancements that have been made to PropertyGrid for WPF that will appear in the future WPF Studio 2010.2 version.  Today I’d like to show a new feature that has also been added for that version.

Overview

Nested categories, meaning categories within categories, are available when setting the new PropertyGrid.AreNestedCategoriesSupported property to true and can be used with either the SelectedObject(s) or Properties properties.

Nested categories are created by specifying the “path” to the desired category, versus the actual name. For example, using a category name of One\Two would create a root category titled One, which contains a nested category titled Two.

PropertyGrid

The screenshot above shows numerous nested categories within the PropertyGrid.

Levels

Any level of nested categories can be created, with each name separate by a backslash (\). If a backslash is required in any of the categories, that part can be wrapped in single or double quotes. For example, One\’Two\2’ would create a root category titled One, which contains a nested category titled Two\2.

Grouping

All properties and categories will be combined, based on their “path”. For example, if two properties both define a category of One\Two, then both properties will be located in the category titled Two. If one property defines a category of One\Two and another property defines a category of One, then the category titled One will contain the category titled Two and the latter property (and the former property will be contained in the category titled Two).

Summary

As mentioned above, these updates will be in the future WPF Studio 2010.2 version.

PropertyGrid for WPF performance enhancements

by Bill Henning (Actipro) July 6, 2010 at 09:25

We’ve been hard at work on enhancements for our WPF controls that will be part of our WPF Studio 2010.2 version.  One of the areas we’ve gotten into is reworking a lot of the internals of our PropertyGrid control to improve performance.

PropertyGrid

PropertyGrid was already performing comparable to other WPF property grids, however we have taken a long look at several areas that we identified could provide some additional performance gains, and have updated our code to take advantage of the ideas.

Without getting into too much detail, we have focused on changes that would reduce the overall number of visuals and measure/arrange cycles that were required.

We also have added some options that further improve performance when set appropriately:

  1. A ScrollViewer is used to provide the vertical scrolling (and show/hide the ScrollBar).  It causes extra measure/arrange cycles since it needs to determine if/when a ScrollBar should be displayed.  We now support the attached ScrollViewer.VerticalScrollBarVisibility property.  When set to Visible, the ScrollBar will always be visible however the extra measure/arrange cycles are removed.
  2. A Thumb is used to allow the end user to resize the property grid’s columns.  A new AreDefaultColumnsResizable property has been added to turn off this feature.  When off, the load time required to arrange, measure, and apply templates is reduced.
  3. Virtualization features have been improved such that scrolling a virtualized property grid is faster than before.

All of these features are complete for the WPF Studio 2010.2 version that should be released in the next couple months.

WPF Studio 2010.1 control suite is live!

by Bill Henning (Actipro) April 14, 2010 at 04:41

A very major new version of WPF Studio is now live and ready for download.  We’ll post more info on the updates in the coming days but a quick summary with links to related blog posts is:

For a detailed change list, please see this announcement.

Upgrade notes

Since 2010.1 is a major new version, 2009.2 customers will need new license keys to use the 2010.1 version. 

If you are an existing customer and have an active subscription, you can log into your Actipro account and there should be a link near the top of your Organization Purchases page allowing you to request a free upgrade to 2010.1.

Alternatively if your subscription has expired, you can order a renewal from our purchasing pages.

If you are using individual WPF products but would like to switch to either the WPF Essentials bundle or WPF Studio suite, e-mail our sales team and we’ll be happy to discuss discounted upgrade options.

What’s next?

Be sure to check out our What we’re working on in early 2010 posting from several weeks ago, as that gives a high-level overview of where our development efforts are at right now.

Today’s WPF Studio 2010.1 release includes all the WPF Studio items in that posting.  In the coming weeks we are planning on adding more custom panels to the new Views for WPF product.

Our primary focus will be on finishing off the public beta for the first Silverlight Studio version though.  Since Silverlight 4 is coming out this week, we will be targeting it.  The first two controls in the Silverlight Studio bundle will be SyntaxEditor and Views.

We also will be working on getting the wpfpedia.com reference guide rewrite live in the coming weeks.  The code for it is about done, we just want to add some more content before publishing it.

As you can see, 2010 is off to a great start with our products and there’s plenty more coming soon.

Upcoming PropertyGrid for WPF enhancements: events and collection editing

by Bill Henning (Actipro) April 8, 2010 at 02:36

We've made two major enhancements to our PropertyGrid for WPF control that have been highly requested by our customers, which include property change events and better collection editing support.  These new features will roll out in the upcoming WPF Studio 2010.1 release.

Property change events

We've added two new bubbling routed events to the PropertyGrid called PropertyChanging and PropertyChanged. These events are fired before and after a property's value is changed via the PropertyGrid, respectively. The event arguments include the IPropertyDataAccessor that is being set, which can be used to access a variety of information about the underlying property (i.e. type, name, value, etc.). In addition, the raw value that is being assigned or was assigned is included in the event arguments. The value is considered "raw" because it may ultimately be converted by the TypeConverter associated with the property.

These events allow you to better track changes made through the PropertyGrid, including capturing undo/redo related information.

Collection support

In previous versions of the PropertyGrid, collections were presented using the associated TypeConverter. The TypeConverter determines whether a property is expandable and how it is converted to other types, such as a string when displayed in a TextBox/TextBlock. The .NET runtime includes two built-in type converters used with collections. The first is CollectionConverter, which does not allow expansion. This converter is used intrinsically by types that implement ICollection, which includes List<T> and Dictionary<TKey, TValue>. The second built-in type converter is ArrayConverter, which does allow expansion. This converter is used by Array objects, which includes types like string[] or int[].

So out of the box, the PropertyGrid would only allow the expansion of arrays as seen below.

PropertyGridCollectionDisplayModeDefault 
Default display mode of an array, a dictionary, a list, and an observable collection in a PropertyGrid

In the 2010.1 release, the PropertyGrid will continue to default to the behavior described above. But using the new CollectionDisplayMode property you can quickly change how collections are displayed. Collections are defined as types that implement ICollection/ICollection<T>, IList/IList<T>, or IDictionary/IDictionary<TKey,TValue>More...

WPF Studio 2009.1 build 506 released with many major updates

by Bill Henning (Actipro) October 20, 2009 at 09:42

Build 506 of WPF Studio 2009.1 is available for download now.  It is one of the larger WPF Studio maintenance releases we’ve made.  Let me do a quick review of some of the major exciting new features.  In addition to this list, there are a lot of other minor enhancements made.

See our related forum announcement for exact details on what updates were made in each product.

ProductDocking32

Docking/MDI for WPF

Custom content in docking window tabs

DockingTabContent

Any content can now be placed in docking window tabs.  This screenshot shows an animated progress indicator in one tab and a drop-down button in the other tab.

Resize slots in a SplitContainer

ProgrammaticSizing

New features have been added making it possible for you to resize the slots of a SplitContainer however you like.  This screenshot shows a split container with an even distribution of space for its slots.

Cascade and tile tabbed MDI documents

TabsTileHorizontally

You now can cascade, tile horizontally, and tile vertically tabbed MDI documents.  This screenshot shows how six tabbed documents are tiled horizontally.

New WindowControl features

WindowControl

WindowControl has several new options and even allows custom content to be in the title bar.  This screenshot shows a small progressbar in the title bar.

Close tabs with middle-click

An option has been added to allow tabs to close with a middle-click, much like in some popular browsers.

ProductEditors32

Editors for WPF

Improved min/maximum value support

The built-in editors have had support for min/max values improved.

ProductNavigation32

Navigation for WPF

New Windows 7-like expander style

ExpanderStyle

A new style has been added that renders similar to the Windows 7 expanders and even has smooth animation.  The style is customized for each system and Office theme.

Built-in expander styles updated to support all expand directions

We’ve updated all our built-in expander styles so that all expand directions are supported: up, down, left and right.

ProductPropertyGrid32

PropertyGrid for WPF

New textbox and dialog button property editor

PGDialog

We’ve added a new built-in property editor that uses a TextBox and includes a button that can be used to show a dialog.

ProductSyntaxEditor32

SyntaxEditor for WPF

Finalized language definition format

This build finalizes the new language project and language definition XML formats.  All language samples have been updated to use them instead of the classic SyntaxEditor 4.0 for WinForms dynamic language XML definition format.

Language Designer application

LangDesigner

Very major improvements (several weeks of dev time) have been made to the Language Designer application.  It has a number of helpful tools for quickly getting started building a syntax language for use with SyntaxEditor.  It now just takes a few minutes to get up and running, even for SyntaxEditor newbies.

Automated quick info session processing

QuickInfo

We’ve added a new quick info provider service that can be added to a language.  This service watches for mouse hovers and just asks you what to display in response to hovers over different areas of the editor.  Quick info can be displayed for hovers over the text area, or any other part of the editor such as in margins.

View mouse hover event

A new view mouse hover event has been added.  We handle all the processing for determining when to fire it.

Caret and selection brush customization

SelectionBrush

You now can completely customize the look of the caret and selection.  Don’t like our default settings?  Change them however you like!

Completion list display when user starts typing a word

We’ve added a new feature to make it easy to know if the user is starting to type a new word, so that a completion list can display in response.

MGrammar tokens now get assigned a token key

We’ve updated tokens generated from the Oslo Dataflow Add-on to provide an IToken.Key value if a TokenKey attribute is specified in the original MGrammar source

ProductShared32

Shared Library for WPF

Unique tooltip for PopupButton popup indicator

We’ve added a new PopupIndicatorToolTip property to PopupButton, which allows the popup indicator to display a unique tooltip, rather than the tooltip for the main button area.

Actipro SyntaxEditor for WPF and Editors for WPF are released

by Bill Henning (Actipro) May 29, 2009 at 08:16

SDICodeEditorThemed

SyntaxEditor for WPF with a custom theme loaded

Yesterday evening we published WPF Studio 2009.1, which includes the first SyntaxEditor for WPF public beta and the official release of Editors for WPF.  These products have been highly requested by our customers so we’re very pleased to get them out into your hands.  More...

Editors / PropertyGrid interop features coming in WPF Studio v5.0

by Bill Henning (Actipro) May 19, 2009 at 02:20

We are working hard to get WPF Studio 5.0 released, which includes our new Editors for WPF product. By themselves, the controls provided by Editors for WPF are extremely useful, but we also wanted to make them easy to integrate into our PropertyGrid for WPF product. In order to keep both products segregated, we created an interop assembly that ties the two products together. This allows each product to be sold separately, while still providing reusable code and samples for customers who own both products.

PropertyGridBrushEditBoxOpen

A PropertyGrid with various Editors controls included

More...

New PropertyGrid features and other WPF Studio build 471 updates

by Bill Henning (Actipro) October 3, 2008 at 01:53

The latest maintenance release of Actipro WPF Studio v4.5.0471 includes several large updates to the PropertyGrid product, several small updates to other WPF Studio products, and a number of brand new QuickStarts for the Sample Browser.

PropertyGrid Features

Filters

The first new PropertyGrid feature is the ability to quickly and easily filter the items presented. We've included several built-in filters for string and boolean properties, as well as filter groups. String filters support everything from Equals to regular expressions and groups can be used to combine any number of filters using AND/OR logic.

PropertyGridBeforeFilter PropertyGridAfterFilter

Shows the PropertyGrid before (left) and after (right) text is typed to filter out properties by name

We designed the filters so that they can readily be used directly from XAML, including support for data binding. Custom filters can be used when the built-in filters are not enough. 

Filters allow users to quickly find a specific item, or they can be used to permanently exclude items from being displayed. 

A common use of filters is to provide a TextBox above the property grid.  When the end user types in text, only the properties whose names contain the text are displayed.  This is displayed in the screenshot above.

Read-Only State

We have also added a read-only state to the PropertyGrid, which is configured using the new IsReadOnly property. Using this new property, all the value editors in the PropertyGrid can be set to prevent changes.

PropertyGridReadOnly

PropertyGrid with the global IsReadOnly flag set to true; note all values are disabled in this mode

Memory Usage and Other Fixes

Several memory issues and other fixes found since the initial product release are also included in this release.

New Demos and QuickStarts

We've added five completely new demos and QuickStarts to this release, along with updating two of our existing QuickStarts with new functionality.

Docking & MDI Custom Docking Windows

We've had several requests to allow our DocumentWindow and ToolWindow controls to be inherited so that they can be defined as their own classes with separate XAML.  There was a core WPF issue that prevented this in the past (styles wouldn't be applied to the inherited controls) however we've found a workaround for this issue and implemented it in build 471.

In addition, we've added a new QuickStart that shows exactly how to define custom DocumentWindow and ToolWindow classes and reuse them in a DockSite.

MonthCalendar Day Highlighting

Another request we've gotten from several customers is to be able to highlight certain days within our MonthCalendar control.  In build 471, we show the implementation of a custom class that highlights certain days. 

MonthCalendar

The MonthCalendar control showing several types of highlighted days

The same concept could be used to highlight holidays, birthdays, etc. in your own applications.

Enjoy the update!

PropertyGrid for WPF released as part of WPF Studio v4.5

by Bill Henning (Actipro) September 22, 2008 at 01:25

We're very happy to have just released PropertyGrid for WPF, a control we've been working on for several months.  The PropertyGrid control combines the best features of the Windows Forms PropertyGrid, the PropertyGrids in both Visual Studio and Expression Blend, and has a number of unique features you won't find in our competition.

PropertyGridThemeOffice2007Blue

The PropertyGrid for WPF control in its Office 2007 theme

Try a Live XBAP Demo

Run our WPF Studio Live Demo to see PropertyGrid in action without leaving your browser.

Downloading PropertyGrid for WPF

You can download PropertyGrid for WPF as part of our new v4.5 release of WPF Studio that just came out.  It has a bunch of QuickStarts not found in the Live Demo and also includes extensive documentation on using the control.

If you would like to try an evaluation, go to our Download WPF Studio Evaluation page.

If you are an existing WPF Studio customer with an active subscription, you can get the update for free by requesting a free upgrade from your Actipro Organization Purchases page.

Feature List

Check out this list of extensive features:

Factory Features

  • Factory architecture allows for complete customization of the items presented.
  • Built-in factories for TypeDescriptor and simple Type reflection provide the most common methods of retrieving properties.
  • Statically defined items can be used in place of, or in addition to, any items dynamically generated by a factory.
  • Ability to merge multiple objects, which means only properties common to all objects are presented.
  • Properties can be automatically sorted and custom SortDescriptions can be defined.
  • Support for expandable properties and lazy loading, which allows for cyclic references and faster load times.
  • Full support and integration with the WPF data validation infrastructure.
  • Properties can be automatically categorized, with support for CategoryAttribute.
  • Simple filtering supported via "browsable" attributes, which specifies attributes that must be defined on a property for it to be included.
  • Attached properties are supported and can be filtered, when using the built-in TypeDescriptor factory.
  • Support for BrowsableAttribute, DisplayNameAttribute, DescriptionAttribute, and several other ComponentModel attributes.
  • Support for ICustomTypeDescriptor, when using the built-in TypeDescriptor factory.
  • Asynchronous mode allows for property retrieval to be executed in a separate thread.

 

Editor Features

  • Several built-in property editors are provided, with more to come in later releases.
  • Support for custom property editors, which can be used to customize the look and/or feel of a given property.
  • Property editors can be defined globally, on a single PropertyGrid, or on specific property (e.g. via EditorAttribute).
  • Property editors can be tied to a property by name, Type, or both, which allows for all properties of a specified Type to use the same editor.
  • Support for custom category editors, which can be used to provide more complex interfaces for presenting/modifying specified properties.

 

Appearance Features

  • Includes fully customizable and resizable summary area, which shows details about the selected item.
  • Easily configurable transitions supported in the summary area.
  • Built-in themes for Aero, Office 2007 blue/black/silver, Luna blue/olive/silver, classic, and high-contrast.
  • Includes a fully customizable context menu, with standard menu items already initialized and handled via built-in commands.

 

Layout, Globalization, and Accessibility Features

  • Columns can be customized as needed to provide a new look or feel, columns can even be added or removed.
  • Resize columns from any where in the control, or programmatically.
  • Right-to-left support is fully integrated for languages such as Hebrew or Arabic.
  • All text properties use localization attributes, and string resources may be customized.
  • Follows the WPF accessibility model for UI automation.

 

Code and Requirements

  • Includes detailed documentation and a sample project that demos nearly every feature.
  • Written in 100% pure C# and is based on the Windows Presentation Foundation framework.
  • Requires the .NET 3.0 or 3.5 run-time framework.
  • Full XAML support and XBAP compatibility.
  • Extensive Visual Studio 2008 designer capabilities.
  • Visual Studio 2008 and/or Expression Blend are recommended development tools for this product.

 

PropertyGrid for WPF is almost ready

by Bill Henning (Actipro) September 4, 2008 at 23:06

We're very close to having our new PropertyGrid for WPF product ready to go and we're confident you'll love it once you get your hands on it.  We've added a lot of innovative features that aren't found in our competition.

More on these closer to release, but I'll review a couple things below.

Release Date

We're putting some final touches on the codebase today and early next week.  We already have over 10 QuickStarts that show off various product features, and several others that we plan on doing, some possibly after the initial release.  We also have to work on documentation.

So with all that mind and barring any last minute changes, we're going to target the first release of PropertyGrid for WPF sometime in the week of September 15th. 

Anyone who has an active WPF Studio subscription at the time of release will be eligible to upgrade to get PropertyGrid for free!  That's one of the great benefits of being a WPF Studio customer, instant free access to new products.

.NET 3.5 SP1 Virtualization

As you know, .NET 3.5 SP1 came out a couple weeks ago adding some nice new virtualization capabilities for native WPF controls.  We wanted to ensure that PropertyGrid also took advantage of the new virtualization features and have designed it accordingly.

When PropertyGrid virtualization is enabled on machines running SP1, the control will use less memory and will have faster load times.  The only downside is that scrolling will be slightly slower since it is generating containers on the fly instead of at initial load time.

Category Editors

One really interesting feature of the Actipro PropertyGrid for WPF is the ability to support custom category editors.

Category editors are a concept introduced in Expression Blend where you can group multiple properties into a custom UI that provides a friendlier layout.  The properties processed by the category editor do not appear individually like normal.

CategoryEditor

Two PropertyGrids side-by-side and operating on the same object, one with default editors and one with custom category editors

The screenshot above shows one of our QuickStarts where both PropertyGrid controls are editing the same object. However the PropertyGrid on the right has a couple category editors that consumes several properties and provides an interesting UI for editing those properties.

As with the rest of the control, the UI can be fully customized and styled.