WinRT Settings Flyout

Topics: UI Architecture
Nov 17, 2012 at 3:02 PM

Are there any samples/instructions of doing a WinRT settings flyout the "Caliburn Micro way"?  Been searching, but haven't been able to find anything.  I found this ( which seems like the ability has now been included (assume with the Nov 15th release of Caliburn Micro?), but haven't been able to find any examples/guidance on how to use this.


Nov 18, 2012 at 2:48 AM

Currently the Windows 8 specific stuff like Sharing and Settings from the post linked above haven't yet been incorporated into the main trunk of Caliburn Micro, hopefully I can get to it in the next release, but I can discuss how it works and it should be easy for you to implement.

We're using the Callisto library from Tim Heuer for the actual SettingsFlyout control, what the Caliburn Micro integration does is let you register view models as being Settings view models and to be displayed in the settings style UI. You'd register standard settings commands as per the windows 8 docs and then when one is selected you could use code like the following to display the UI.

var view = ViewLocator.LocateForModelType(viewModelType, null, null) as FrameworkElement;

if (view == null)

var viewModel = ViewModelLocator.LocateForView(view);

if (viewModel == null)

ViewModelBinder.Bind(viewModel, view, null);

var settingsFlyout = new SettingsFlyout
    FlyoutWidth = SettingsFlyout.SettingsFlyoutWidth.Narrow,
    HeaderText = "Settings header",
    Content = view,
    IsOpen = true

settingsFlyout.Closed += (s, e) =>
    var deactivator = viewModel as IDeactivate;

    if (deactivator != null)

var activator = viewModel as IActivate;

if (activator != null)

Nov 18, 2012 at 12:58 PM

Thanks for the details.  I've just created a work item for this ( so I can subscribe and be updated when this moves into the main package. 

Thanks again for this great project!

Nov 20, 2012 at 3:27 PM

@NigelSampson - Thanks for the excellent explanation of the solution. It worked perfectly for me. After I implemented it I noticed there is a nuget package to help with this as well: