Intersoft ClientUI 7 adds a lightweight IoC container and a powerful view extensibility to the ClientUI Framework, as well as several new innovative data controls designed to address large data scenarios in line-of-business application development. The new release also adds significant enhancements to the existing controls as well as new framework features across Silverlight 3, Silverlight and WPF platforms.
This topic contains the following sections.
- Framework
- New Controls
- Enhancements to Existing Controls
- Integration with IdeaBlade DevForce
- New Reference and MVVM Samples
Framework
New: Inversion-of-Control (IoC) Container
ClientUI now includes a robust and lightweight IoC Container in ClientUI Framework. Inversion-of-Control (IoC) is a design pattern that inverts the flow of the application logic, which is achieved through the use of Dependency Injection for its binding process. The goal of this design pattern is to achieve maximum loose coupling where dependencies can be minimized or completely eliminated. With this approach, the application code can be easily extended as the concrete implementation can be dynamically specified or changed at runtime. For more information, see Inversion-of-Control (IoC) Container Overview.
New: Region Manager for View Extensibility
In this release, ClientUI has provided the most comprehensive design pattern library for Silverlight and WPF application development, from Application Modularity, MVVM, Event Aggregrator, to IoC Container and Region Manager. The new Region Manager library provides the design patterns for extending views in loose coupling approach. It supports two of the most common approaches to view extensibility such as View Injection and View Discovery. For more information, see Region Manager Overview.
Enhanced: Application Framework
The following list details the enhancements made to the ClientUI Application Framework:
- Added the Download method overload with event argument in the OnSuccess parameter.
public bool Download(bool autoLoadOnCompleted, Action<ApplicationDownloadingEventArgs> onDownloading, Action<ApplicationDownloadedEventArgs> onDownloadSuccess, Action<ApplicationDownloadCancelledEventArgs> onDownloadCancelled, Action<ApplicationDownloadFailedEventArgs> onDownloadFailed)
- Bootstrapper support through the provided IApplicationInitializer interface. This feature works consistently in root application (shell) as well as in on-demand loaded XAP package. In addition, it works in conjunction with the IoC Container where container registration is required when the application is first loaded into the domain.
- Added RemoveSetting method to remove a setting from the isolated storage in the application scope.
- Added WindowClosing event to the Browser class. This feature allows you to show confirmation window before the browser is closed or navigated away which is useful in business applications with editing form. Furthermore, it doesn’t require any additional code in the plug-in host/page.
The following code example shows how to implement the event to show confirmation dialog when the browser window is closed.
C# Copy Code
public App() { Browser.WindowClosing += new EventHandler<HtmlWindowClosingEventArgs>(Browser_WindowClosing); } private void Browser_WindowClosing(object sender, HtmlWindowClosingEventArgs e) { ShellViewModel shellViewModel = Container.Resolve<ShellViewModel>(); if (shellViewModel.GetModifiedEditors().Count > 0) { e.ShowConfirmationDialog = true; e.Message = "You have unsaved changes in your current session. Are you sure you want to leave the application?"; } }
The browser’s confirmation dialog will only appear when the ShowConfirmationDialog property of the event argument is set to true. You can customize the message through the provided Message property.
- Added DisableSilverlightContextMenu static property to the Mouse class, enabling the native Silverlight context menu to be disabled globally.
For more information about ClientUI Application Framework, see Application Framework Overview.
Enhanced: Navigation Framework
The following list details the enhancements made to the ClientUI Navigation Framework:
- Supports extra data passing during navigation through the ExtraData property in the NavigationOptions class which is commonly set to the command parameter using MVVM pattern.
- Added Authenticating event to the UXFrame to provide you with a more granular control over the authentication process, i.e., implementing your own authentication logic.
For more information about ClientUI Navigation Framework, see Navigation Overview.
Enhanced: Localization Manager
- Added SetUICulture method to change only the UICulture without modifying the default thread's culture.
For more information about localization, see Localization Overview.
Enhanced: JsonSerializer
- Added object Deserialize(Type type, string jsonString) method in addition to T Deserialize(string jsonString) method.
New Controls
Data Controls
ClientUI 7 is strongly focused in providing advanced data controls that address performance issues when used in large data scenarios. The ClientUI data controls are built to adhere to the industry's best practice in design and architecture including full support for MVVM design pattern.
The following table lists the new data controls available in ClientUI 7.
![]() |
UXPageableComboBox An intuitive ComboBox with highly-efficient data retrieval through built-in paging mechanism. |
![]() |
UXMultipleSelectionComboBox An innovative ComboBox control designed for multiple selection input with MVVM-ready architecture. |
![]() |
UXTreeList A powerful data control that combines the best features of Grid and Tree. |
Enhancements to Existing Controls
General
- Major performance improvement during user interaction events such as got focus, focus switching, key events, and mouse events – particularly in pages with large number of controls.
- Improved memory management and optimized resources allocation for all existing ClientUI controls.
UXButton
- Added ClickLatency property to delay command when the button is executed through user-initiative actions such as mouse click or enter key.
UXComboBox
-
Major performance improvement during initial load, selection and items source processing.
-
Added built-in grouping capability. For more information, see Items Control Grouping Overview.
UXDataComboBox
- Added LoadDataWhenEmpty property to determine whether UXDataComboBox should try loading data when its ItemsSource currently empty and it is opened for the first time.
- Added ShowResultBoxOnEmptyData property to determine whether UXDataComboBox should open the result box when the query text return mpty data.
UXGridView
- Modify Columns property to Dependency Property type to enable columns binding.
- Added HeaderBinding property to support localization for UXGridView columns.
- Added UXGridViewSequenceColumn to display sequantial row position in UXGridView.
- Added EmptyRowsVisibility property to display empty rows when number of records is smaller than available screen estate.
- Added NewRowPosition property to change the new row position. You can change the new row position to bottom when EmptyRowsVisibility is set to Visible.
- Added NewRowLostFocusAction property to determine the behavior when you lost focus when editing a new row.
- Added LostFocusAction property to determine the behavior when you lost focus when editing a row.
For the information about UXGridView and its complete features, see UXGridView Overview.
UXWindow & UXWindowChrome
-
Added InnerBorderThickness property to control the thickness of the inner border element.
UXDialogBox
- Added AutoCloseDialog feature. When set to true, it will automatically close the dialog when a value is assigned to the DialogResult property. This feature is useful in MVVM scenario when the DialogResult property is bound to the ViewModel and its value is changed in the ViewModel.
UXMessageBox
-
Support XAML binding to the Message property through Style Setter.
-
Added ImagesBaseUri property to the MessageBoxOptions class, allowing the customization of message box images.
UXRibbonWindow
- Added BarContainer element to the template which represents the container for additional toolbar template.
UXRibbon
- Added HeaderHeight property to the UXRibbonBar class which can be used to control the height of the header element of the control.
-
Added TitleEffect property.
-
Added TabBarVisibility property, allowing the Ribbon control to be used in compact mode. This feature is useful when the Ribbon has only one tab (perfect for toolbar replacement).
-
Improved performance during initial load. The page that contains UXRibbonBar can now be animated smoothly.
-
Improved performance when the tab group and contextual group collection changes, resulting in faster layout update with eliminated flickering.
-
Added CanUserCustomize property to the UXRibbonQuickAccessToolBar class.
-
Added TextLineHeight property to UXRibbonButton, used to customize the line height between the text in the button.
UXTabControl
-
Added TabControlRegionAdapter for extending the UXTabControl control with Region Manager. For more information, see Region Manager Overview.
-
Added HeaderVisibility property to customize the visibility of the tab header element.
-
Added GoToPage command to dynamically control the selected tab in UXTabControl via commanding. For more information, see Commanding Overview.
UXTreeView
- Added Depth property to the UXTreeViewItem class, used to determine the depth of the current tree node.
- Added CanUserSelect and CanUserSelectMemberPath property to the UXTreeViewItem class.
- Added CanUserExpandCollapse and CanUserExpandCollapseMemberPath property to the UXTreeViewItem class.
UXSplitButton
- Added AutoUpdateActiveItem property. This feature automatically set the last clicked menu item as the default active command.
- Added ActiveMenuItemIndex to set the initial active command when the AutoUpdateActiveItem feature is enabled.
UXTextBox
- Added ShowWatermarkOnFocus property which allows the watermark to stay visible even when the control has focus. In this mode, the watermark will disappear as user types into the textbox.
UXPasswordBox
- Added ShowWatermarkOnFocus property, allows the watermark to stay visible even when the control has focus. In this mode, the watermark will disappear as user types into the textbox.
UXFrame
-
Support custom animation with predefined value expression.
ContentTransition
-
Support custom animation with predefined value expression.
Integration with IdeaBlade DevForce
Since the previous release, Intersoft ClientUI installer has included IdeaBlade DevForce as part of the installation process. The integration enables streamlined development of cross-platform data applications in an end-to-end approach, from the view (UI) design to the entity modeling and data services. For more information about the integration features, see Controls and Features Added in ClientUI 6 and Controls and Features Added in ClientUI 5.
DevForce Version Update
ClientUI 7 now automatically install the most recent DevForce release, version 6.1.7. For more information about the changes in DevForce 6.1.7, please read DevForce Release Notes.
Due to the latest update in DevForce, several samples and project templates have been updated to reflect the new functionality and API available in DevForce 6.1.7.
Update in Intersoft.Client.Data.Provider.DevForce
All ExecuteAsync method overloads for EntityQuery extensions now return INotifyCompleted type to support the Coroutine feature in DevForce.
Updated ClientUI - DevForce Project Templates
The following project templates have been updated to work with DevForce 6.1.7:
- ClientUI MVVM Business Application (C# & VB)
- ClientUI MVVM Data Application (C# & VB)
- ClientUI MVVM Scheduling Application (C# & VB)
In addition, the business application template has been revamped to use the new Authenticator API available in DevForce 6.1.7 for the login and authentication process.
To see the complete list of available ClientUI project templates, see Introduction to ClientUI Project Templates.
New Technology/MVVM Samples
As in every new releases, the ClientUI live samples is added with dozens of new samples to demonstrate the new controls' features. To browse all the new samples added in this release, see Locating the Samples in Local Installation.
Additionally, numerous technology samples are added in this release which demonstrate several key features such as supported cross-platform, unified development model, as well as best practice in using ClientUI controls with other technologies like WCF RIA Services and DevForce Services. For the complete list, see Samples Overview.
To see the list of new walkthroughs and how-to topics, please refer to Walkthroughs and How-to Topics.