protected override LazyScreen <TScreen, TMetadata> EnsureItem(LazyScreen <TScreen, TMetadata> newItem) { var node = newItem as IChild; if (node != null && node.Parent != this) { node.Parent = this; } return(newItem); }
private void CloseItemCore(LazyScreen <TScreen, TMetadata> item) { if (item.Equals(ActiveItem)) { var next = DetermineNextItemToActivate(item); ChangeActiveItem(next, true); } else { ScreenExtensions.TryDeactivate(item, true); } item.Reset(); }
public override void DeactivateItem(LazyScreen <TScreen, TMetadata> item, bool close) { if (item == null) { return; } if (close) { CloseStrategy.Execute(new[] { item }, (canClose, closable) => { if (canClose) { CloseItemCore(item); } }); } else { ScreenExtensions.TryDeactivate(item, false); } }
protected LazyScreen <TScreen, TMetadata> DetermineNextItemToActivate(LazyScreen <TScreen, TMetadata> currentItem) { var next = Items.FirstOrDefault(x => x != currentItem && x.IsScreenCreated); return(next); }