コード例 #1
0
        private Task <bool> ShowInLayoutView(FrameworkElement view, OutletBasedPresentationAttribute attribute, MvxViewModelRequest request)
        {
            var viewOutlet = FrameworkElementsDictionary.Keys.FirstOrDefault(w => (w as IIdentifiableViewOutlet)?.Identifier == attribute.OutletIdentifier) as IIdentifiableViewOutlet;

            if (viewOutlet is null)
            {
                throw new ArgumentException($"Could not find view outlet with identifier '{attribute.OutletIdentifier}'.");
            }

            FrameworkElementsDictionary[viewOutlet as ContentControl].Push(view);
            viewOutlet.ShowView(view);
            return(Task.FromResult(true));
        }
コード例 #2
0
        private Task <bool> CloseLayoutView(IMvxViewModel viewModel, OutletBasedPresentationAttribute attribute)
        {
            var item       = FrameworkElementsDictionary.FirstOrDefault(i => i.Value.Count > 0 && (i.Value.Peek() as IMvxWpfView)?.ViewModel == viewModel);
            var viewOutlet = item.Key as IIdentifiableViewOutlet;
            var elements   = item.Value;

            if (elements.Count > 0)
            {
                elements.Pop(); // Pop closing view
            }
            if (elements.Count > 0)
            {
                viewOutlet.CloseView(viewModel, elements.Peek());
                return(Task.FromResult(true));
            }

            return(Task.FromResult(false));
        }