New Features in This Release
- Support for the share charm (more information on these in a future post),
- View-model centric share source support – by implementing ISharable on view-models they can automatically provide context specific sharing of data with other applications.
- MVVM based share target support – implement a share target to accept data from other applications via a specified view/view-model.
- Helper methods for task based asynchronous data sharing.
- New OkraApplication base class that will allow the framework to handle more advanced activation events in the future (more on this in a future post).
- Introduction of an INavigationContext that can be imported into views and view-models (more on this in a future post).
- The INavigationBase interface now has an additional CanNavigateTo(…) method that allows consumers to determine if a named page is available without performing the navigation.
- Refactoring of state persistence into the NavigationBase abstract class to allow reuse of this logic in custom navigation scenarios.
- Additional events are raised,
- upon navigation between pages (on INavigationBase)
- upon flyout opening/closing (on ISettingsPaneManager)
- All exceptions on application start-up should now be injected back into the application and not lost.
There are a small number of breaking changes in this release of the framework, however most of these are unlikely to apply to users of the framework (they are mostly under-the-hood interface changes that would only be applicable in advanced scenarios).
The only important change is,
- The default OkraBootstrapper base class no longer implements the SearchManager property. If you are using the Okra search functionality then you should simply add the following code to your application bootstrapper.
For reference the other breaking changes are,
- The SearchManager implementation now includes a default search page name (specified in the SpecialPageNames class). Since search is now opt-in this should not cause problems for existing code.
- Removal of the obsolete SetupNavigationManager() method from OkraBootstrapper – this code can simply be placed in the SetupServices() method instead.
- This IViewFactory now accepts an INavigationContext when creating pages. This should be injected during the composition process (handled automatically by the default MEF implementation).
- Additional methods/properties to the INavigationBase, IViewFactory and ISettingsPaneManager interfaces. These will need to be added to any custom implementations.