Skip Navigation Links
Calcium is an MVVM application toolset for UWP, WPF, Windows Phone, and Xamarin applications. It provides much of what you need to rapidly build sophisticated yet maintainable applications.

To install Calcium, run the following command in Visual Studio's Package Manager Console

PM> Install-Package Calcium

What Calcium SDK users are saying

"this is, quite frankly, astonishingly amazing."
"Calcium is an innovative project and a huge time saver for new Prism developers."
"Amazing work..."
"I'm just speechless... I've been reviewing WPF and CAL for the first time in the last few days, comming from CAB and SCSF background over the last few years. Your app has provided me with a one-stop-shop of all the questions I was having. Wow!"
"It's a fantastic project and has saved me so much time reinventing the wheel."

Features at a Glance

Calcium's core features allow you to accelerate your development of MVVM applications. Here are some of Calcium's features:

Enhanced Commanding Support

The Calcium ICommand implementation uses parameter type value coercion. Enum types, for example, can be used as command parameters in XAML, and they are converted to the correct type for you by the time they hit your viewmodel. That means you can leverage Generic ICommands in XAML and you don’t need to make assumptions or perform type conversion of parameter values. This work was inspired by Pete Blois terrific work on implicit type coercion.

UICommands offer Visibility, Text and Icon properties that can be changed according to the logic that can be encapsulated by the command logic. They also work in unison with a number of controls, including Calcium’s AppBar for Xamarin Forms, and Calcium’s User Options system. You see examples of these features in a number of the upcoming articles.

Frictionless INotifyPropertyChanged (INPC) Infrastructure

Calcium’s INPC system has automatic UI thread affinity. Modifying a property in a viewmodel (an ObservableObject) from a non-UI thread automatically raises a property changed event on the UI thread if necessary. In addition, the PropertyChangeNotifier can be applied to any class and makes use of weak referencing to prevent memory leaks. In addition, a PropertyChanging event is raised before the PropertyChanged event to give other components a chance to cancel the change.

Settings Service

Calcium’s setting service allows you to save settings on whatever platform your app is running. It includes notifications that allow you to cancel setting changes, and to be notified before a setting change takes place. It also provides the means to serialize values, composite objects, or even to customize the serialization of objects via an IXmlConvertible interface.

Options System

Calcium’s options system enables you to quickly create a user options page for your app. Categorized options can be added with a single line of code. Templates control how types of options are displayed. The options system works in unison with the settings service to automatically write changes back to persistent storage.

Inversion of Control and Dependency Injection

Calcium includes a built-in IoC container supporting Dependency Injection; attribute based constructor and property injection, and which is also interchangeable. If Calcium’s IoC container or Microsoft Unity don’t fit the bill, you can create adapters for whatever implementation you’d like to use.

Cross-Platform Dialog Service

Calcium’s DialogService has an asynchronous API, implemented for each platform with an extensibility model that allows you to present dialogs to the user and easily receive user feedback.

Extensible String Parser

Calcium includes an extensible String Parser service for which you can create recognizable tags that are processed at run-time to insert information in to a string. This offers the ability to create dynamic localizable strings.

An Undo Redo Stack for your App

Calcium includes an undo redo task system, which gives the user of your app the ability to undo an action, or redo that action.

Weak Referencing Messaging System

The weak referencing messaging system, known as the Messenger, uses a declarative interface based approach that allows an object to be notified of an event from another component within the app. A set of standard message classes are included that allow you to send payload objects to listeners, or to even cancel a message.

Collections, such as an ObservableList

Calcium includes collections such as the ObservableList that allow you to postpone collection changed events to perform bulk updates, without causing multiple updates to UI controls and slowing the UI thread.

Input Validation System

Calcium includes an attribute based asynchronous input validation system that allows you to easily validate forms. I have not yet created the UI for visualising validation error in Xamarin Forms.

ViewModel State Persistence System

Calcium allows you to maintain the state of your application across tombstoning (Windows Phone) using an attribute based system or a programmatic property registration system. I have not yet wired this up for Xamarin Forms.

Most of this infrastructure can now be leveraged on Windows, Windows Phone, and thanks to Xamarin iOS and Android. This series of articles covers what is in Calcium and is a preview of what is inevitability coming to Calcium for Xamarin Forms.

Calcium for the Universal Windows Platform (UWP)

Calcium for UWP is a light weight framework for incorporating the main features that every app needs. Unlike Calcium for WPF and Silverlight, Calcium for Windows Phone does not depend on Prism and has a smaller footprint, more suitable for a mobile platform.

Calcium for Xamarin.Forms

Calcium extends itself to the Xamarin toolset. Calcium for Xamarin includes libraries for both Android and iOS. With Calcium you can place images anywhere in a shared project as Content resources like in Windows Phone, and consume them in the same way across all three platforms. Use Calcium in conjunction with T4 templates to enable localizability for your Android app. Extend beyond current Xamarin Forms API capabilities to implement a quasi-data-template selector to materialize viewmodels in an MVVM compatible way.
Read more about Calcium for Xamarin Forms
Calcium for Xamarin

Calcium for WPF

Calcium for WPF leverages Prism and consists of a client application and server based WCF services, which allow interaction and communication between clients. Out of the box, Calcium comes with a host of modules and services, and an infrastructure that is ready to use in your next application.


  • Advanced module management, and Module Manager for enabling or disabling of modules at runtime.
  • Visual Studio templates for rapid creation of Calcium projects, including client applications, MVVM Module Templates, and server WCF host projects. (C# and VB.NET!)
  • Theme Support, with two attractive themes included.
  • Duplex messaging services for interacting with the user from the client or server using the same API. Interact with the user using Message Boxes from the server!
  • Advanced commanding support, with content interfaces determining enabled commands and views.
  • Region Adapters for ToolBars and Menus.
  • Client-server logging ready to work out-of-the-box.
  • Includes modules, such as a Web Browser, Text Editor, Output Window, and many more.
  • Tabbed interface with dirty file indication (reusable across modules).
  • A User Affinity module that assists collaboration with other users of the application.
  • Undo/Redo/Repeat task management system.
  • And more
Calcium for WPF Screenshot

Calcium for Windows Phone

Calcium for Windows Phone is a consolidation of the infrastructure code that has been written for the book Windows Phone 8 Unleashed, and is used by several popular apps in the Windows Store, including Surfy Browser and Intellicam. Calcium for Windows Phone is a light weight framework for incorporating the main features that every app needs. Unlike Calcium for WPF and Silverlight, Calcium for Windows Phone does not depend on Prism and has a smaller footprint, more suitable for the mobile platform. Calcium for Windows Phone Screenshot


  • A user options system that allows you to add a settable option to an options page, with a single line of code.
  • A bindable application bar with toggle buttons and menu items, hyperlink button/menu items, which allows you to host multiple application bars in a Pivot.
  • Built-in support for localization. Bindable resources allows the user to change the interface language at run-time.
  • An IoC container and DI infrastructure, and templates to allow you to hide or show a Purchase link in your app depending on the Trial state of your app and so forth.
  • Templates for Views with ViewModels.
  • Attribute based state persistence system.
  • Message service that allows you to display messages and ask the user questions from your ViewModel.
  • Launchers and Choosers abstraction layer.
  • Input Validation system, with styles customized for displaying validation errors.
  • And more

Calcium News

Facebook logo  Calcium on Facebook

Project Statistics