Skip to content
Antony Male edited this page Jan 6, 2015 · 21 revisions

Want to get up and running as quickly as possible? This is the right place!

Step 0 is of course to install Stylet. See the README for instructions on how to do this.

First off, delete MainWindow.xaml and MainWindow.xaml.cs. You won't be needing them.

Next, you'll need a root View and a ViewModel. The View has to be a Window, but there are no other restrictions.

<Window x:Class="Stylet.Samples.Hello.RootView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Height="300" Width="300">
    <TextBlock>Hello, World</TextBlock>
</Window>

The ViewModel can be any old class (for now - you might want it to be a Screen or Conductor, discussed elsewhere).

class RootViewModel
{
}

Next, you'll need a bootstrapper. For now, you don't need anything special - just something to identify your root ViewModel. Later, you'll be able to configure your IoC container here, as well as other application-level stuff.

class Bootstrapper : Bootstrapper<RootViewModel>
{
}

Finally, this needs to be referenced as a resource in your App.xaml. You'll need to remove the StartUri attribute, and add xmlns entries for Stylet and your own application. Finally, you'll need to add Stylet's ApplicationLoader to the resources, and identify the bootstrapper you created above.

It should look something like this:

<Application x:Class="Stylet.Samples.Hello.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:s="https://github.com/canton7/Stylet"
             xmlns:local="clr-namespace:Stylet.Samples.Hello">
    <Application.Resources>
       <s:ApplicationLoader>
            <s:ApplicationLoader.Bootstrapper>
                <local:Bootstrapper/>
            </s:ApplicationLoader.Bootstrapper>
        </s:ApplicationLoader>
    </Application.Resources>
</Application>

That's it! Run that, and you should get a window with 'Hello World' in it.

The ApplicationLoader

It's worth noting that <s:ApplicationLoader> above is a ResourceDictionary subclass. This allows it to load in Stylet's built-in resources (see Screens and Conductors). You can choose not to load Stylet's resources like this:

<s:ApplicationLoader LoadStyletResources="False">
   ...
</s:ApplicationLoader>

If you want to add your own Resources / ResourceDictionaries to the Application, the simplest way is like this:

<Application.Resources>
    <s:ApplicationLoader>
        <s:ApplicationLoader.Bootstrapper>
            <local:Bootstrapper/>
        </s:ApplicationLoader.Bootstrapper>

        <Style x:Key="MyResourceKey">
            ...
        </Style>

        <s:ApplicationLoader.MergedDictionaries>
            <ResourceDictionary Source="MyResourceDictionary.xaml"/>
        </s:ApplicationLoader.MergedDictionaries>
</s:ApplicationLoader>
</Application.Resources>

If this makes you uncomfortable for some reason, you can also do this:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <s:ApplicationLoader>
                <s:ApplicationLoader.Bootstrapper>
                    <local:Bootstrapper/>
                </s:ApplicationLoader.Bootstrapper>
            </s:ApplicationLoader>

            <ResourceDictionary Source="MyResourceDictionary.xaml"/>
        </ResourceDictionary.MergedDictionaries>

        <Style x:Key="MyResourceKey">
            ...
        </Style>
    </ResourceDictionary>
</Application.Resources>
Clone this wiki locally