Tweets by @Actipro
Please take some time to learn more about us and our product offerings.
Hey everyone, we've been working very diligently on the 2017.1 version of our WPF controls for the past several months and a public beta is almost ready. We'd love as many customers as possible to participate in the beta. First, let's give an overview of what's new in the 2017.1 version.
In the 2017.1 version, we reimplemented all Editors controls to be faster and more lightweight in terms of elements/bindings, and to use a common codebase with the Universal Windows Editors product. The new designs are better optimized for use in large quantities such as within data grids or property grids.
Every new edit box control has more fine-grained control over the step values. Now a native TextBox control is used for input, which allows for more free-form editing, IME input, and better UIA support.
New and improved drop-down pickers have been designed for each edit box. The pickers are optimized for mouse, pen, and touch-based entry. The screenshot above shows the BrushEditBox and the new BrushPicker drop-down control. Altering any edit box's drop-down is simply a matter of providing an alternate Style for its picker control.
New edit boxes have been added for the Byte, Int16, and Single numeric types, along with dedicated date-only (DateEditBox) and time-only (TimeEditBox seen above) variations of DateTimeEditBox.
Our customers have requested custom tree controls from us for a while now and we delivered in this version. We now offer a new TreeListBox control that is a single column tree similar to a native TreeView but optimized for MVVM usage, virtualization, and speed. It supports nearly all of the advanced features you'll find in a tree control like the Visual Studio Solution Explorer tree.
We also offer a new TreeListView control that is built upon the TreeListBox control but displays multiple columns similar to a ListView. Each column supports its own distinct user interface via data templates.
Both of these controls are packaged in a new Grids product.
While the PropertyGrid control found in our 2016.1 and earlier versions was very feature-rich, its performance sometimes left much to be desired and customization via property editors wasn't very straightforward.
In the 2017.1 version, PropertyGrid has been rewritten from scratch and constructed around the foundation provided by the new TreeListBox and TreeListView controls. It's now lightning fast and loads complex objects (like the properties of itself) almost instantly. A lot of this is due to simplification of the internal object model, use of virtualization techniques, and fewer overall UI elements. You'll definitely notice the speed increase.
The core object model used to track properties and categories has been improved and creating custom property editors is much more straightforward now.
The new PropertyGrid is part of the Grids product as well.
If you'd like to help us beta test the product, please write our support address and let us know your existing 2016.1 license information. We will notify you as soon as the public beta is ready and will send you a 2017.1 license if your subscription is still active.
The code for the beta is near complete and should be pretty stable. We have a full array of samples and documentation has been completely updated, including conversion notes.
We also will be chatting about the beta in our Slack channels so please join if you have Slack.
February 1, 2017 at 05:58
The new TreeListView looks great and the goals cited are exactly what we're looking for. Is it tuned for real-time updates both of the constituent data and of rows being added/removed? Does it provide customizable copy/pasting? Which .NET Framework version is the minimum for this new release?
February 1, 2017 at 07:38
Hi Jesper,Yes TreeListBox/View will watch any bound child VM collection if that collection implements INotifyCollectionChanged, and will update the UI with changes to that collection. ObservableCollection works great in VMs for this like we do in our TreeNodeModel.Children example.While we do have customizable drag/drop support, I don't believe we have anything built-in for copy/paste. That being said, all you have to do there is watch for keys like Ctrl+C/Ctrl+V, look at the selected items in the tree control, and adjust your VM structure accordingly. Per above, changing an observable children collection of VMs will update the tree.Everything is still .NET 4 minimum. If you'd like to help beta test, please write our support address.
Bill Henning (Actipro)
February 1, 2017 at 07:49
That sounds great. I meant pasting text content out from the list, not pasting new items into it, so just populating the clipboard, I guess. Being able to take enough control that we could populate it with both plaintext and a representation that would paste well into Excel would be a big plus.The reason I asked about the real-time updates is because of the deplorable state of this aspect in the Microsoft WPF controls, where it was considered a feature and called "live shaping" when it finally made its way in. I'm taking it as granted that if the collection is observable, then so will INotifyPropertyChanged objects update their individual columns. How does this play with virtualization, when there may not even be objects yet?I'm sure there are answers for all these things in the beta documentation. I'd be glad to beta test but we don't have a license for this product yet. We're watching very closely.
February 1, 2017 at 07:52
Ignore the part about virtualization mostly. If there aren't objects yet, they're not shown on screen and thus don't need to be updated. If an object that's the parent of a list of objects shown on screen changes, it may need to be updated, but I'm sure those objects are kept alive too.
February 1, 2017 at 09:51
Hi Jesper,Right you can watch for KeyDown on Ctrl+C and look at the selected node(s) to decide what to put in the clipboard in response. And we have an event so you can customize the context menu for any node too, allowing you to support Copy that way too. If you want us to build in more direct support for clipboard behaviors after looking at the product and trying it out, contact our support address and we can discuss putting something on the TODO list.We implemented TreeListBox/View as a flat single ItemsControl unlike native WPF TreeView that has every node as an ItemsControl. This way we have far less overhead in terms of controls used, and virtualization works the same as in a normal ListBox. It will basically only load up item containers (TreeListBoxItem, etc.) for VMs that are displayed or about to be displayed if you scroll a tad. Then it recycles those for new ones as needed. Internally we have a tree node structure that references each VM of yours that we know about and keeps the tree hierarchy in place. That tree node watches the children property you tell it about and does the INotifyCollectionChanged behavior previously described. If changes are found, the control updates appropriately.We have full documentation for the tree controls and many samples included in the beta.If you'd like to try it out, please write our support address and we'll get you on the list. Thanks!
Bill Henning (Actipro)
February 2, 2017 at 06:54
Sounds great!Now I need to rethink our plan for the next couple of months