public virtual bool CloseWorkspace(IViewServiceProvider provider, IWorkspaceConstruct construct) { bool? confirmation = (construct.ViewModel as IWorkspaceViewModel)?.Closing(provider); if (confirmation.HasValue && !confirmation.Value) { return false; } return Workspaces.Remove(construct); }
public bool TryFind(IWorkspaceConstruct construct, out int index) { index = -1; if (construct.WorkspaceID == null) { return false; } for (int i = 0; i < Workspaces.Count; i++) { IWorkspaceConstruct item = Workspaces[i]; if (item.ViewModelType == construct.ViewModelType && object.Equals(item.WorkspaceID, construct.WorkspaceID)) { index = i; return true; } } return false; }
public virtual void ShowWorkspace(IWorkspaceConstruct construct) { int i; if (TryFind(construct, out i)) { Workspaces[i].IsActive = true; } else { construct.Build(); construct.IsActive = true; Workspaces.Add(construct); construct.IsAttached = true; var handle = Created; if (handle != null) { handle(construct); } } }