Tweets by @Actipro
Please take some time to learn more about us and our product offerings.
We had a customer write us the other day mentioning that ClearType was turning off when using our RibbonWindow class in Windows Vista with Aero enabled and was falling back to grayscale antialiasing.
After a lot of debugging and searching, we found that the root of the problem was the use of Vista's Aero glass in the client area of a Window in WPF. Basically if glass is disabled or not available (like in Windows XP), everything is fine and renders properly using ClearType. However if you implement your WPF Window such that glass can enter the client area (like in our RibbonWindow or previously-posted GlassWindow that is soon to be released), ClearType will disable and grayscale antialiasing will be used instead.
We traced the line that causes the issue down to this one, which is necessary for any WPF Window to properly support Aero glass in its client area:
// Ensure the background of the composition target is transparent HwndSource.FromHwnd(hwnd).CompositionTarget.BackgroundColor = Colors.Transparent;
Basically if the Colors.Transparent is set to the Window's composition target, ClearType becomes disabled. If you don't set this however, then glass is not able to enter the client area of the Window.
Here is a great post by Dax Pandhi on how to enable Aero glass in WPF Windows.
In there you can see how the line of code above is used to notify Win32 to use a transparent background for the client area of the window.
After some more searching on Google, we found this post too which explains the issue a bit more:
Give me back my ClearType
That post shows some screenshots of the issue and is very helpful for telling what things will cause ClearType to disable.
I've posted a question about this issue in the Microsoft WPF forum and hopefully Microsoft will do something about this in the future.
Another new control in the upcoming Actipro WPF Studio v3.5 maintenance release is GlassWindow.
It is a normal Window however adds some additional property that allow you to extend Aero glass effects in Vista into the client area of the window. It's very simple to use, you just ensure IsGlassEnabled is true and set the thickness of the client area glass that you want.
A GlassWindow with Aero glass extended into the client area of the window
As an added feature, you can set the glass thickness to -1 to make the entire background of the window be glass.
The next control I'd like to introduce for the upcoming large WPF Studio 3.5 maintenance release is the AnimatedProgressBar control.
The AnimatedProgressBar control in a window that mimics a file copy status window
The AnimatedProgressBar control is essentially like a standard native WPF ProgressBar except that it has numerous improvements:
In preparation for a pretty large update to WPF Studio v3.5 that will most likely be out next week, we will be making several blog posts showing some of the new features and controls that will be available in the update. We'll start small and get into the better features as we go.
First, we've added hint text support to Ribbon textboxes and comboboxes. Hint text is a faded out blurb of text that appears when a textbox or combobox is empty. It usually gives some simple instruction for related to the data that should be input to the control, or a description of that data that should be entered.
The hint text starts out somewhat opaque when there is no content in the control. If the control gains focus, the hint text becomes slightly more transparent. If content is entered, the hint text disappears completely.
The same TextBox in three hint text states... the top TextBox doesn't have focus or content, the middle TextBox has focus but no content, and the bottom TextBox has focus and content
Transitions between the various hint text states use smooth animations for visual appeal.
This feature can be used for Ribbon textboxes and comboboxes both inside and outside of the Ribbon.
Keep an eye on our blog as we get into some of the larger new features in forthcoming posts.
The latest build of the .NET Languages Add-on released today includes some great new features related to automated IntelliPrompt.
This build adds IntelliPrompt support for extension methods, a new feature found in C# 3.0 and VB 9.0.
Extension methods allow you to define new methods on existing types without having to sub-class or recompile the original type. This means you can add functionality directly to types for which you don't have source code.
The member list displayed for an Int32 parameter, showing how source-defined extension methods are applied
In the sample above, note the extension method ToStringExt is defined on the static ExtMethodProvider class. In the TestMethod, we press "." to show a member list for its Int32 parameter val and that locates the ToStringExt method, including it in the available members for the Int32 parameter.
Extension methods can be defined in compiled assemblies or in code as above. The most common use of extension methods is with LINQ.
A member list displayed for a string array variable, showing how extension methods from LINQ's classes have been added to the normal members that appear on an array
The latest build adds IntelliPrompt support for delegates.
The parameter info tip displayed for a delegate invocation
Support for recognition of the EditorBrowsable attribute is now available.
Note that the member list shows an entry for _AVisibleClass but not for _AnInvisibleClass since that class has EditorBrowsable(Never) applied to it
When the EditorBrowsable(EditorBrowsableState.Never) attribute is applied to a type or member, that type or member will no longer appear in member lists.
The attribute is recognized for both assembly-defined and source-defined types and members.
A week or so ago in our newsletter we officially announced the development of Actipro Docking for WPF and Actipro SyntaxEditor for WPF. These two products when completed will be added to our WPF Studio control bundle.
Also note that we have some other special controls in development as well, but we'll keep those under wraps for now.
A WPF window showing tool windows that are docked and in auto-hide mode, along with a SyntaxEditor control in the content area of the DockSite
The Docking product is progressing very nicely and is expected to be the next major product added to WPF Studio. Its design harnesses our themes framework, thereby making it easy for us to provide alternate themes such as Aero, or Office themes with minimal effort.
Docking includes many of the extremely flexible behavior options that have made our UIStudio Dock for Windows Forms product very popular. We also have some surprises in store. We'll get into some of these options and new features in future posts.
We're approaching the SyntaxEditor product as an opportunity to do a lot of neat new things and make improvements to the SyntaxEditor for Windows Forms product that is recognized as the industry leader in syntax highlighting editor controls.
One design goal of ours is to try and separate out the document/parsing model to a .NET 2.0-based assembly that could be used by both SyntaxEditor for WPF, SyntaxEditor 5.0 for Windows Forms, and a future CodeHighlighter.
We are working on doing some big language design enhancements too. Even though what we have now is great, we have a lot more ideas that we want to integrate, making it easier for you to develop both simple and complex language parsers for your editor.
Stay tuned to the blog for more information on Docking, SyntaxEditor and other new controls. We'll continue to post new information as development progresses.
The latest build for SyntaxEditor's .NET Languages Add-on now includes complete generic type IntelliPrompt functionality.
A parameter info tip displayed for a generic type... notice how it has resolved the return type to String
This has been a highly requested feature by customers. Now you can fully utilize the power of generic types such as generic collections, etc. with the .NET Languages add-on.
For instance, in the screenshot above, after you would complete the indexer reference and press ".", the member list that would display would be for type String. Type String was declared as the "U" generic parameter in MyCollection, which was passed down to the base Collection generic type. Therefore the String type was used to construct Collection. With the most recent build, SyntaxEditor's .NET Languages Add-on can recognize that and provide proper IntelliPrompt related to it.
Enjoy the new features!
This is an issue that a couple customers have run into and emailed us on, so we wanted to post more about it.
The scenario is that you drag a Ribbon onto a Window and everything shows up fine at design-time. But when you go to run your application, you see a blank Window.
What happened was that you probably clicked and dragged something somewhere in the Visual Studio designer that either:
At run-time a feature of Ribbon is to collapses when there is not enough space for it. You have full control over the threshold size at which this collapse occurs. But one of the items in the list above would have caused this collapse code to kick in because the Ribbon is being forced smaller than desired.
To fix this problem, simply look at the XAML for your Ribbon tag and remove any Width/Height property settings. Also check to ensure that a Margin isn't set that could be causing this. Then run your application and everything should appear like you would expect since now the Ribbon is not being forced to a small size.
In the designer we force Ribbon to stay expanded and ignore its normal run-time collapse behavior. This is done so that you can properly visually design the Ribbon.
We also have a section explaining this issue in the Ribbon control's Troubleshooting topic in the product documentation.
The latest WPF Studio v3.5.0421 build includes an interesting new feature for Ribbon that was requested by several customers, the ability to hide the application button.
A ribbon with its application button hidden
This new feature can be activated with a simple Ribbon.IsApplicationButtonVisible property change.
When the application button is hidden, the QAT and tabs slide over to fill the space.
Explorer bar is an implementation of the task bar that was introduced in Windows XP's explorer. It hosts a vertical stack of expandable panes that generally provide task-based information to the end user.
The ExplorerBar control in its Luna normal-color theme
Any content can be placed within each expander pane and the alternate style of pane headers is supported via a simple style setting.
Each expander pane uses smooth animation to fade in and slide down its contents when expanded. Likewise, when an expander pane is collapsed, its contents fade out and slide back up.
The ExplorerBar control with its second pane being expanded with animated fade in and slide down
This product includes 4 distinct built-in themes and is fully extensible so that other product themes can be custom developed. Themes can be tinted towards any color or set of colors, and brush resources from them may be reused.
The ExplorerBar control in its Windows Classic theme
An option is available to only permit a single expander pane to be expanded at any time. By default, any number of expander panes may be expanded.
This control fully supports left-to-right layouts and user interface resource string customization.
ExplorerBar using a right-to-left flow direction
ExplorerBar has designer support similar to our other controls. For instance when working in Visual Studio 2008, you have access to task panes for the controls:
An ExplorerBar selected in the Visual Studio 2008 designer
ExplorerBar installs toolbox items for VS 2008. It even includes an item template that is available from the New Item pane in VS 2008 that when selected, creates a new Window with a simple ExplorerBar on it.
Any Actipro WPF Studio customer with an active subscription is eligible to get ExplorerBar for free!