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)); }
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)); }