private void OnClose(object obj)
        {
            //здесь может быть долгая асинхронная задача: валидация, сохранение итд

            IsClosed = true;

            ChildViewModelManager.Close(this);

            RaiseClosed();
        }
        protected void Close()
        {
            if (IsClosed)
            {
                throw  new InvalidOperationException("Already closed");
            }

            OnClosed();

            IsClosed = true;

            ChildViewModelManager.Close(this);

            RaiseClosed();
        }