- Fix bug where Actions could complain that no suitable method was found, when using `s:View.ActionTarget`
- Remove the Initial screen state. Screens are started on Deactivated
- Allow the ViewManager to be configured, including supporting Views and ViewModels in different namespaces and customizing the 'View' and 'ViewModel' suffixes
- Actions try harder to find a suitable ViewModel, in the case of things like KeyBindings and ContextMenus
- StyletIoC: Allow multiple services to be bound to the same registration (useful for having a single singleton instance used for two interfaces, for example)
- Backwards-incompatible changes to Bootstrapper: Configure is now called *after* ConfigureIoC, OnStart came before ConfigureIoC, and OnLaunch now happens after Launch
- Screen now uses a property enum-based state machine to manage state. IActivate, IDeactivate and IClose have all been rolled into IScreenState
- Fix incorrect use of WeakEventManager in ScreenExtensions: ConductWith won't have been working properly
- Set WindowStartupLocation to CenterOwner if the user hasn't set it themselves
- WindowManager does not set the Title binding (to DisplayName) if it's been set by the user
- Actions throw on execute if ActionTarget hasn't changed from the default. This catches an edge-case where Actions are used inside something like a ContextMenu which breaks the visual tree
- Expand IViewManager to add other useful stuff, which ViewManager did anyway
- Conductors now optionally dispose their children, and the WindowManager never does. This is to handle ViewModels which are displayed multiple times e.g. as dialogs
- Conductors now ensure new children are either activated or deactivated. This is to handle child ViewModels which may have been closed previously
- Make BootstrapperBase non-generic, instead having an abstract RootViewModel property. This makes it more flexible.
- Handle null/empty property name in ValidatingModelBase.ValidatePropertyAsync
- Move back to separate arguments for ShowMessageBox - this is more consistent with MessageBox.Show
- ViewManager now accepts an IViewManagerConfig (implemented by BootstrapperBase), which simplifies the IoC container setup
- Add an overridable CanClose() method to screen (called by the CanCloseAsync version by default). This means screens don't have to deal with tasks if they're fully synchronous
- Remove the IoC static service locator. It's no longer needed internally, and I don't want to encourage such bad behaviour. You can write your own easily if you need - see the docs
- Remove the static AssemblySource class, instead using a collection stored on the Bootstrapper
- Add Bootstrappers projects, with sample bootstrappers for a range of IoC containers
- Remove extension methods on IContainer, instead putting them in the interface. This means people don't have to have 'using StyletIoC' in order to see the methods they want to use