Tweets by @Actipro
Please take some time to learn more about us and our product offerings.
Our WPF Docking/MDI control product allows you easily add docking tool windows and a MDI (multiple document interface) to your app, one that mimics Visual Studio. We have two built-in MDI options: tabbed and standard. Tabbed is similar to the style that current Visual Studio versions use. However some customers still prefer to use the classic windowed style of MDI that we call "standard MDI".
There is no built-in standard MDI mechanism in WPF, but we provide a complete implementation in Docking/MDI with all the functionality like cascading and tiling that you would expect.
We just had a customer ask how they could animate a standard MDI window into place when it's first loaded.
We did a quick experiment in our 2016.1 version using a simple implicit Style and it worked great. Here's the results:
The animation we defined quickly fades in the window and "pops" it into place. This animation matches the animations we use elsewhere in the product such as when dock guides appear while dragging docking windows around.
Here's the code that you can place in your app's Resources to get the animation above to appear:
<Style TargetType="docking:StandardMdiWindowControl"> <Setter Property="Opacity" Value="0" /> <Setter Property="RenderTransformOrigin" Value="0.5,0.5" /> <Setter Property="RenderTransform"> <Setter.Value> <ScaleTransform ScaleX="0.8" ScaleY="0.8" /> </Setter.Value> </Setter> <Style.Triggers> <EventTrigger RoutedEvent="docking:StandardMdiWindowControl.Loaded"> <BeginStoryboard> <Storyboard> <DoubleAnimation Storyboard.TargetProperty="Opacity" To="1" Duration="0:0:0.2" /> <DoubleAnimation Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleX)" To="1" Duration="0:0:0.2"> <DoubleAnimation.EasingFunction> <BackEase EasingMode="EaseOut" /> </DoubleAnimation.EasingFunction> </DoubleAnimation> <DoubleAnimation Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleY)" To="1" Duration="0:0:0.2"> <DoubleAnimation.EasingFunction> <BackEase EasingMode="EaseOut" /> </DoubleAnimation.EasingFunction> </DoubleAnimation> </Storyboard> </BeginStoryboard> </EventTrigger> </Style.Triggers></Style>
Download our WPF Controls and give it a try!
Today we published a WPF Controls maintenance release v2016.1 build 635. The updates are described in detail in this post. It is highly recommended that you download this maintenance release since it fixes several issues that popped up with the Docking/MDI product and makes several other minor enhancements as well.
We are now at a stage where we are about to start prepping our codebases for the upcoming 2017.1 version. Over the past few months, we've been working on an array of new and revised controls for that version, and will begin merging all that in over the coming weeks. Look for a beta testing request announcement in very early 2017.
Everyone, please have a wonderful holiday season and happy new year!
Very large maintenance releases of our v2016.1 WPF, Universal Windows, and Silverlight controls have been released and are now available for download. While there are an enormous number of minor updates and bug fixes made across the various UI control product range, the following lists the major updates that were made.
These Actipro maintenance releases update our UI controls to support the Visual Studio 2017 RC version that was released on Wednesday. Congratulations to the Microsoft teams involved in delivering the next major version of our favorite IDE!
A new event has been added that is raised when dragging docking windows over a drop target. Handle this event to specify that certain dock guides should be hidden that normally would be visible.
A new property is available to prevent floating dock hosts that contain MDI from showing in the Windows taskbar. (WPF only)
A new Calculator control has been added that provides a familiar calculator interface to interactively calculate numeric values. A new PickerKind property is available on DoubleEditBox and Int32EditBox to allow for optional usage of the calculator in the popup picker.
New edit box and picker controls have been added for the Int16, Int64, Single, and TimeSpan types.
A new property has been added that determines the scenarios (e.g Enter key press, etc.) in which a value commits when editing in an edit box.
A new property has been added that determines the wrapping behavior used when spinning past a minimum or maximum value in the active part in an edit box.
Added the DoubleEditBox.IsNaNAllowed, IsNegativeInfinityAllowed, and IsPositiveInfinityAllowed properties, which allow entry of those related values.
Improved Int32EditBox to support hexadecimal formats.
Improved GuidEditBox to support multiple formats.
Added UI automation peers for numerous controls.
The MaskedTextBox control added a default context menu and the gradient brush editor added a Remove Stop button.
The TreeListBox control and its derivatives added a powerful data filtering mechanism that uses string, boolean, and predicate-based logic to filter items.
A new sample that demonstrates filtering was also added.
Added the ZoomLevelIncrement property that controls the mouse wheel zoom step amount.
Added several UI automation peers for internal SyntaxEditor components.
Improved the IntelliPrompt completion list to try and keep the item matched by typing scrolled to the middle.
Added a UI automation peer for the RadialSlider control.
Updated the RadialSlider control to support more keyboard shortcuts.
All products received numerous other minor enhancements and bug fixes. See the announcement posts for the detailed list of enhancements and updates:
In this quarter, we published new maintenance releases of our WPF, UWP, and Silverlight control products. SyntaxEditor received numerous updates like a much-improved system for tracking line modification marks that works just like Visual Studio's (including showing reverted changes), a JSON text formatter, ability to merge new text changes into previous ones, and more. Docking/MDI received many new features and bug fixes and the new build is a recommended update if you using the 2016.1 version. The Shared Library added support for grayscale images on disabled controls. But most importantly, we added an alpha build of our upcoming Grids product containing previews of our TreeListBox and TreeListView controls. We've discussed these in several blog posts around the middle of the year.
The past couple months we've focused on finalizing the TreeListBox and TreeListView controls and have been busy reimplementing our PropertyGrid control to be based on TreeListView. That work is mostly completed at this point. The new PropertyGrid we're making harnesses virtualization and is lightning fast. It's also extremely customizable, making it easier than ever to make custom property value editors or even control which properties show up in the PropertyGrid. We will be officially launching this new PropertyGrid control in a Grids product with the TreeListBox/TreeListView controls in early 2017 but might post a preview build of the new PropertyGrid in late 2016.
We also have been working on backporting our UWP Editors product to WPF. The editors found in that newer design are a bit simpler in nature (much lighter-weight in terms of UI elements) and very performant, while still providing the best features found in the current WPF Editors. We are preparing these new and updated Editors to also launch in early 2017, alongside the new Grids product. They will be ready for easy usage within the new PropertyGrid as well.
If you have any interest in helping test some of these new controls, please write our support address or sign up for our Slack team.
The most recent 2016.1 release of our WPF Controls added a new DynamicImage control. This is a drop-in replacement for Image that will auto-grayscale the image content when the control is disabled.
Ribbon buttons have all been updated to automatically grayscale their images when they are disabled.
The left ribbon has enabled buttons and the right ribbon has several disabled buttons
ToolBar buttons (if our native control themes are applied) have also all been updated to automatically grayscale their images when they are disabled.
The left toolbar has enabled buttons and the right toolbar has several disabled buttons
In the past, the above disabled buttons would show their images with some transparency but would retain the color. Having images auto-switch to grayscale ensures that they truly reflect a disabled state.
These features are in the latest 2016.1 maintenance release, available now.
The latest maintenance releases of our v2016.1 WPF, Universal Windows, and Silverlight controls had some major work done on SyntaxEditor's line modification marks feature. In fact, its internal logic was completely rewritten and improved.
Line modification marks use colored bars in the selection margin to tell the end user whether changes have occurred on the line, and whether those changes have been saved.
This animation shows this feature in action:
New changes will turn the marks yellow to reflect that those lines are “dirty” (unsaved). If you then "save" the document (which I do above after typing on two lines), the marks turn green to indicate they are now saved.
While the yellow and green marks were present in older versions, there were some bugs that could occur with their tracking over the course of multiple text changes. Those bugs have been fixed in this latest maintenance release.
In addition we also have added orange marks, that occur when you undo past the save point. They show anything that is different from what was saved but is not different from the document when it was originally opened.
These great new features match exactly with what is in Visual Studio and are wonderful for end users. Grab the latest 2016.1 builds to add them to your own apps!
Very large maintenance releases of our v2016.1 WPF, Universal Windows, and Silverlight controls have been released and are now available for download.
We've been blogging about our new TreeListBox and TreeListView controls for a little while now. They have been in private alpha testing and now we have placed the alpha test in a new public Grids assembly that has shipped in this WPF and UWP maintenance release.
TreeListBox is a TreeView-like control but has many advanced features like those found in the Visual Studio Solution Explorer. See this blog post for some details on the feature list.
TreeListView inherits TreeListBox and includes all of the tree hierarchy features found in it. It also displays each row similar to a ListView, columns and all! This blog post summarizes the features found in this control.
With this public alpha release of the controls, you are able to start using them and can provide us with feedback. We'd love to hear from you, whether it be via our ticket system or Slack. Our plan is to finalize them for the 2017.1 version, but they should be pretty stable for usage now. Anyone with a WPF/UWP Studio or PropertyGrid license should be able to use them immediately under your existing 2016.1 license.
Going forward, we have already made major progress on rewriting our PropertyGrid control and basing it on TreeListView. So far, performance tests are showing that it's loading large property trees almost instantly. We'll blog more on this in the upcoming weeks.
There were a lot of tweaks and bug fixes in this build for the Docking/MDI product. We recommend you grab the latest if you use Docking/MDI.
There were numerous improvements too, including some more major ones like:
Line modification mark tracking logic has been completely rewritten. It now works much better and even introduces new orange marks that track "reverted" changes, similar to how the Visual Studio editor does.
We added the ability for a programmatically created text change to merge into previous text change on the undo stack. This allows you to chain additional text changes onto previous ones and have them be undoable as a single unit.
We added a new property that can be set to false to only allow backspacing over a single character when the document's AutoConvertTabsToSpaces is true.
The PasteDragDrop event is now also raised drag over events so that the drag effects can be manually altered.
The ITextChange.CustomData property is now settable so it can be updated after the text change was created as needed.
A text formatter for the JSON language has been implemented that beautifies the JSON data.
We added the DynamicImage control, which is a drop-in replacement for Image that will auto-grayscale the image content when the control is disabled. Going along with this, we updated ImageConverter to return a DynamicImage instance instead of Image. Our toolbar, menu, and Ribbon control themes have been updated to use DynamicImage so that you get grayscale effects on images out-of-the-box. Note how the cut, copy, and undo buttons are all grayscale when disabled in the screenshot above.
If you encounter a 'Could not find a part of the path' to bitmap image source error after upgrading to this version, specify the absolute path to the image source using pack syntax as described in the DynamicImage documentation instead of using a relative path.
We moved ImageToMonochromeConverter from our Ribbon assembly to Shared and renamed it to ImageSourceContentConverter. Along the way, it was updated to work on vector GeometryDrawings too. We added an attached ImageSourceContentConverter.CanConvertToMonochrome property, which can be set on portions of a DrawingImage that shouldn't be converted to monochrome, such as areas that display a selected color. We also added a ImageSourceContentConverter.Mode property that sets whether to convert to grayscale (default) or monochrome.
In the last blog post on our TreeListBox control development, we announced that the TreeListBox control was ready for closed alpha testing. TreeListBox is a new control that has much of the same functionality as the tree control found in the Visual Studio Solution Explorer.
In today's post, I'd like to announce a new TreeListView control that is now also ready for alpha testing. The TreeListView control is a multi-column variant of the TreeListBox control that renders similar to a standard ListView but has all the tree and advanced features found in TreeListBox.
The animation above shows several of the features found in this new control such as node expansion, column resizing, column reordering, column header context menus, and more.
Thus far these TreeListView features have been completed:
If you would like to start working with either of the controls and provide us with feedback, please write our support address or chat with us on Slack to sign up for testing. Now is the time to contribute your additional feature ideas and report bugs. Anyone who has a WPF Studio license is fully licensed to use the control in their apps.
In this quarter, we published new maintenance releases of all our control products and released the 2016.1 WinForms Controls. In terms of development, we've been working on a new Grids product (for WPF and UWP) that will initially consist of a TreeListBox, similar to the tree control found in the Visual Studio Solution Explorer. That control is already in alpha testing to some customers. While that testing is ongoing, we have made great progress on a TreeListView control, which is a multi-column variant of the TreeListBox control. This control features everything you find in a standard ListView, along with all the features of TreeListBox, and additional ones like column reordering, frozen columns, etc. We'll post more on this new control very soon.
Development of the TreeListView control is currently the primary focus. We hope to wrap that up for alpha testing in the next two or three weeks. After that we have some other plans for derived controls that are based on the foundation provided by TreeListBox and TreeListView that we will be getting into.
A new version of our Windows Forms controls has been released. This version includes several large new features along with numerous minor bug fixes and updates. First, these are some of the major new features…
When a new DockManager property is set to true, documents can be floated to their own window. This allows them to be moved to and maximized on a second monitor.
We've always had layout serialization for tool windows but now tabbed document windows can have their layouts serialized as well.
The C# parser in the WinForms .NET Languages Add-on has been updated to support the parsing of C# 5.0 syntax.
See the announcement post for the detailed list of other enhancements and updates.