This project has moved and is read-only. For the latest updates, please go here.

Xomega Framework Overview

Xomega framework is designed to increase developer productivity and promote reusability and consistency for development and maintenance of data-centric multi-tier WPF and Silverlight applications.

Architecture4At its core the framework provides base classes for building rich presentation layer data objects that can be easily bound to XAML forms, which will serve as views of the data objects and will be kept in sync with the objects’ state. This is known as part of the Model-View-Controller (MVC) and MVVM design patterns.

Xomega Data Properties

However, unlike the standard WPF data binding where only the data part of the controls is typically bound to a property of the underlying value object, Xomega data properties maintain additional metadata for each property such as whether the property is editable, required, its security access level, a list of possible values, validation rules, etc. The state of the WPF controls bound to Xomega properties will be also bound to this metadata, so that the control can become enabled or disabled, visible or invisible, marked as required, and display selection of possible values or show the validation errors if any.

In addition Xomega properties can hold multiple values and apply the same formatting and validation rules to each value individually. This could be reflected by the bound controls by highlighting or checking off the selected items or just displaying the data as comma-separated values depending on the type of control.

All changes to the property data or metadata trigger appropriate property change events. This way, for example, a data object can listen for changes in one property and, based on its current value, make other properties editable, visible or required as appropriate. As a result, this kind of presentation logic will be encapsulated in the corresponding data object and the view will just reflect the changes automatically. This provides a much better separation between the view or layout aspects and the presentation logic, which leads to more robust system designs that are much easier to maintain.

The data properties form a hierarchy, where more specialized properties inherited from more generic ones. Typically in large applications the same type of field may appear numerous times. To ensure a consistent look and feel with minimal coding, you can create a reusable data property, which will encapsulate all the value conversion, parsing, formatting and validating logic that will work for both single-valued and multi-valued fields and use it in every data object for the same type of fields.

Xomega Data Objects

Each Xomega data object consists of a collection of such data properties as well as a collection of child objects or object lists (subobjects). Editability of the data objects cascades down to its properties and subobjects, so that switching it editable or non-editable would automatically enable or disable the whole view bound to the object. By the same token, you can easily check if the object has been modified or validate the entire object, which recursively will check the modification state of or validate all its properties and subobjects respectively. Previously this kind of tasks had to be manually coded since the UI controls are typically too disparate to be iterated over like this and also value object properties didn't support such information.

Xomega data objects can be defined manually in the code as classes that inherit from a base data object class and add their named properties of different types. However, the bulk of that code can also be generated from a Xomega XML-based object model using a generator provided with Xomega.Net plug-in for Visual Studio 2008. In fact, you can generate most of the application’s plumbing code from the Xomega object model including a database layer, Entity Data Model, WCF service layer, Xomega data objects and WPF or Silverlight forms that are based on and bound to the corresponding Xomega data objects. To read more about Xomega please visit

Last edited Oct 20, 2010 at 5:47 AM by Xomega, version 4


No comments yet.