Ejemplo n.º 1
0
        public override void RegisterAttributeTypes()
        {
            AttributeTypesToActionsDictionary.Add(
                typeof(MvxWindowPresentationAttribute),
                new MvxPresentationAttributeAction
            {
                ShowAction = (viewType, attribute, request) =>
                {
                    var view = WpfViewLoader.CreateView(request);
                    return(ShowWindow(view, (MvxWindowPresentationAttribute)attribute, request));
                },
                CloseAction = (viewModel, attribute) => CloseWindow(viewModel)
            });

            AttributeTypesToActionsDictionary.Add(
                typeof(MvxContentPresentationAttribute),
                new MvxPresentationAttributeAction
            {
                ShowAction = (viewType, attribute, request) =>
                {
                    var view = WpfViewLoader.CreateView(request);
                    return(ShowContentView(view, (MvxContentPresentationAttribute)attribute, request));
                },
                CloseAction = (viewModel, attribute) => CloseContentView(viewModel)
            });
        }
Ejemplo n.º 2
0
        public override void RegisterAttributeTypes()
        {
            AttributeTypesToActionsDictionary.Register <ModalPresentationAttribute>(
                (_, attribute, request) =>
            {
                var view = WpfViewLoader.CreateView(request);
                return(ShowModalWindow(view, attribute, request));
            },
                (viewModel, _) => CloseWindow(viewModel));

            base.RegisterAttributeTypes();
        }
 public override void RegisterAttributeTypes()
 {
     base.RegisterAttributeTypes();
     AttributeTypesToActionsDictionary.Add(typeof(OutletBasedPresentationAttribute), new MvxPresentationAttributeAction
     {
         ShowAction = (viewType, attribute, request) =>
         {
             var view = WpfViewLoader.CreateView(request);
             return(ShowInLayoutView(view, (OutletBasedPresentationAttribute)attribute, request));
         },
         CloseAction = (viewModel, attribute) => CloseLayoutView(viewModel, (OutletBasedPresentationAttribute)attribute)
     });
 }
Ejemplo n.º 4
0
 public override void RegisterAttributeTypes()
 {
     base.RegisterAttributeTypes();
     AttributeTypesToActionsDictionary.Register <CustomMvxContentPresentationAttribute>(
         (viewType, attribute, request) =>
     {
         var view = WpfViewLoader.CreateView(request);
         return(ShowContentView(view, (CustomMvxContentPresentationAttribute)attribute, request));
     }, (viewModel, attribute) =>
     {
         return(CloseContentView(viewModel));
     });
 }
        public override void RegisterAttributeTypes()
        {
            AttributeTypesToActionsDictionary.Register <MvxWindowPresentationAttribute>(
                async(viewType, attribute, request) =>
            {
                var view = await WpfViewLoader.CreateView(request).ConfigureAwait(false);
                return(await ShowWindow(view, attribute, request).ConfigureAwait(false));
            },
                (viewModel, attribute) => CloseWindow(viewModel));

            AttributeTypesToActionsDictionary.Register <MvxContentPresentationAttribute>(
                async(viewType, attribute, request) =>
            {
                var view = await WpfViewLoader.CreateView(request).ConfigureAwait(false);
                return(await ShowContentView(view, attribute, request).ConfigureAwait(false));
            },
                (viewModel, attribute) => CloseContentView(viewModel));
        }
Ejemplo n.º 6
0
        public override MvxBasePresentationAttribute GetOverridePresentationAttribute(MvxViewModelRequest request, Type viewType)
        {
            if (viewType?.GetInterface(nameof(IMvxOverridePresentationAttribute)) != null)
            {
                var viewInstance = WpfViewLoader.CreateView(viewType) as IDisposable;
                using (viewInstance)
                {
                    MvxBasePresentationAttribute presentationAttribute = null;
                    if (viewInstance is IMvxOverridePresentationAttribute overrideInstance)
                    {
                        presentationAttribute = overrideInstance.PresentationAttribute(request);
                    }

                    if (presentationAttribute == null)
                    {
                        MvxLogHost.Default?.Log(LogLevel.Warning, "Override PresentationAttribute null. Falling back to existing attribute.");
                    }
                    else
                    {
                        if (presentationAttribute.ViewType == null)
                        {
                            presentationAttribute.ViewType = viewType;
                        }

                        if (presentationAttribute.ViewModelType == null)
                        {
                            presentationAttribute.ViewModelType = request.ViewModelType;
                        }

                        return(presentationAttribute);
                    }
                }
            }

            return(null);
        }
        public override async ValueTask <MvxBasePresentationAttribute?> GetOverridePresentationAttribute(MvxViewModelRequest request, Type viewType)
        {
            if (viewType?.GetInterface(nameof(IMvxOverridePresentationAttribute)) != null)
            {
                var viewInstance = (await WpfViewLoader.CreateView(viewType).ConfigureAwait(false)) as IDisposable;
                using (viewInstance)
                {
                    MvxBasePresentationAttribute?presentationAttribute = null;
                    if (viewInstance is IMvxOverridePresentationAttribute overrideInstance)
                    {
                        presentationAttribute = overrideInstance.PresentationAttribute(request);
                    }

                    if (presentationAttribute == null)
                    {
                        MvxLog.Instance.Warn("Override PresentationAttribute null. Falling back to existing attribute.");
                    }
                    else
                    {
                        if (presentationAttribute.ViewType == null)
                        {
                            presentationAttribute.ViewType = viewType;
                        }

                        if (presentationAttribute.ViewModelType == null)
                        {
                            presentationAttribute.ViewModelType = request.ViewModelType;
                        }

                        return(presentationAttribute);
                    }
                }
            }

            return(null);
        }