Caliburn.Micro Xaml made easy

Caliburn.Micro 3.2.0 released

A small house keeping release in part to get ready for Windows Template Studio work.

Included are the following:

  • #443 Remove a rogue dependency on System.Web that was accidentally included.
  • #462 WPF Window Manager won’t override a Window’s Title if it’s been set. Thanks @tziemek.
  • #466 Add a Set implementation to `PropertyChangedBase.
  • #475 Platform provider methods are now virtual.

Caliburn.Micro 4.0.0 and .NET Standard

I’m pleased to say that development on Caliburn.Micro 4.0.0 has started on the branch dev/4.0.0. One of the first things I’ve done is transition the whole solution across to Visual Studio 2017, .NET Standard and making use of multi-targeting.

As it stands right now Caliburn.Micro.Core which was previously a PCL will now target .NET Standard 1.0 which gives a great range of supported platforms. Caliburn.Micro.Xamarin.Forms targets the .NET Standard 1.6.

I’ve also taken advantage of the new multi-targeting approach allowed in Visual Studio 2017. Previously for all the Caliburn.Micro.Platform projects I had all the source in one folder along with around six to eight project files. Each project simply included or excluded the files it needed with compiler directives if it needed to exlude only a little code.

Switching to multi-targeting doesn’t really change this approach except we can shift from all those project files to simply one. Along with wild card inclusions platform specific code only needs to be dropped in the right folder for it to be used correctly.

There’s a lot of work to be done before I consider doing a release but if you’re looking to try it out or see how a project that targets a lot of platforms looks when making this change feel free to check out the code.

Caliburn.Micro 3.1.0 released

A small feature and bug fix release to clean out some of the backlog before 4.0.0.

Included are the following

  • #439 Fixes up an issue using commas in constant values cm:Message.Attach="ShowTitle('One, Two, Three')"
  • #432 Stop calling InitializeCompontent on Xamarin.Forms, this was mostly used for a underused feature of .xaml files without a code behind. On the non-XF platforms this method has re-entry protection, the XF version did not.
  • #423 Fixes a null reference in the Setup.WPF sample.
  • #417 Handle a ContentPropertyAttribute that doesn’t supply a property name (WPF’s Frame does this).
  • #364 Support OnViewLoaded in Xamarin.Forms when the view is a ContentPage.
  • #352 Add an extension point BindingScope.GetVisualParent to help people who use visual “bridge” libraries.
  • #319 Add $clickedItem Special Value for WinRT / UWP based projects.
  • #278 Add a navigation service for WPF and Silverlight with a sample. Note this service may change in 4.0.0 with an effort to align all the navigation services.
  • #247 Add an extension point on PropertyChangedBase and BindableCollection<T> named OnUIThread to allow people to customize how property changed notifications are dispatched to the UI thread.

New Samples

Recently I’ve gone through an effort to rebuild and reogranize the samples for Caliburn.Micro. There a number of goals:

  1. Have consistent setup examples for all supported platforms.
  2. Have examples of most framework features on all supported platforms.
  3. Highlight novel scenarios for using Calbirn.Micro.

These projects can also form the foundation for anyone looking to repro a small issue with ease.


An example of a barebones setup for each supported platform, just beyond the bare minimum (includes a container and dependency injection.) These include:


A solution that demonstrates the usage of most major framework features across all the supported platforms (showing some of the inevitable platform discrepancies). Also this solution provides an example of using a Shared project to share code (in this case the view models) across mulitple platforms. The features covered include:

  • Binding Conventions
  • Action Conventions
  • Coroutines
  • Dispatching to the UI thread
  • Event Aggregation
  • Design Time Conventions
  • Conductors and Composition


A collection of solutions highlighting one off scenarios that may or not apply to multiple platforms. They’re such that demonstrating them on all platforms would not add extra value. These include:

  • Switching IoC containers to something like Autofac
  • The use of F#
  • Customising the framework

Often unseen contributions

Lately I’ve been thinking about the work that goes into producing open source software and the often unseen contributions people and companies make. These companies provide software often for free to open source projects for often little thanks.

So here’s a quick list of the unseen / not really thought about support provided to Caliburn.Micro.

  • JetBrains provides a much needed open source license to Resharper.
  • GitHub provides Git hosting for the source and the hosting for this website.
  • Microsoft provides VSTS hosting for an experimental (at the moment) build server, an MSDN license for Visual Studio Enterprise and access to product teams for assistance.
  • The various control companies Telerik, Syncfusion and Infragistics, with access to the control libraries assists with testing.
  • Xamarin - When Xamarin was an independent company they provided a Business license.

Without their help I doubt we’d be able to have the software we have today, nor be in a position for even more change in the future.