public virtual bool Save(IWorkspaceController workspaceController)
        {
            if (string.IsNullOrWhiteSpace(_filename))
            {
                var requestWriterArgs = new RequestNewFileArgs();
                workspaceController.RequestNewFile(requestWriterArgs);
                if (requestWriterArgs.Cancel)
                {
                    return(false);
                }
                if (requestWriterArgs.Filename == null)
                {
                    throw new ApplicationException("Filename returned by Controller is null");
                }
                _filename = requestWriterArgs.Filename;
            }

            var           workspaceModel = buildWorkspaceModel();
            XmlSerializer serializer     = new XmlSerializer(typeof(Workspace));

            using (StreamWriter sw = new StreamWriter(_filename)) {
                serializer.Serialize(sw, workspaceModel);
                sw.Close();
            }
            IsDirty = false;
            OnDirtyChanged?.Invoke(this, new DirtyChangedEventArgs(false));
            RaiseOnSavedEvent(_filename);
            return(true);
        }
示例#2
0
        public void RequestNewFile(RequestNewFileArgs args)
        {
            if (_fileDialog.ShowNewWorkspaceDialog() == DialogResult.Cancel)
            {
                args.Cancel   = true;
                args.Filename = null;
                return;
            }

            args.Cancel   = false;
            args.Filename = _fileDialog.FileName;
        }