private void CreateViewModelWrapper(bool checkIfWrapped = true)
{
var dependencyResolver = this.GetDependencyResolver();
var targetView = TargetView;
var viewModelWrapperService = dependencyResolver.Resolve<IViewModelWrapperService>();
if (checkIfWrapped || !viewModelWrapperService.IsWrapped(targetView))
{
var wrapOptions = WrapOptions.None;
#if NET || SL5
if (CreateWarningAndErrorValidatorForViewModel)
{
wrapOptions |= WrapOptions.CreateWarningAndErrorValidatorForViewModel;
}
#endif
#if !XAMARIN
if (TransferStylesAndTransitionsToViewModelGrid)
{
wrapOptions |= WrapOptions.TransferStylesAndTransitionsToViewModelGrid;
}
#endif
Action action = () => viewModelWrapperService.Wrap(targetView, this, wrapOptions);
// NOTE: Beginning invoke (running async) because setting of TargetControl Content property causes memory faults
// when this method called by TargetControlContentChanged handler. No need to await though.
#if NETFX_CORE && !UAP
var dispatcher = ((FrameworkElement)TargetView).Dispatcher;
#pragma warning disable 4014
dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { action(); });
#pragma warning restore 4014
#else
action();
#endif
}
}