} // ctor #endregion #region -- Load, Close -------------------------------------------------------- private async Task OpenPdfAsync(object data) { switch (data) { case string fileName: // open a file from disk using (var bar = this.DisableUI(String.Format("Lade Pdf-Datei ({0})...", fileName))) SetLoadedDocument(await LoadDocumentFromFileNameAsync(fileName)); // parse pdf in background break; case IPpsDataInfo info: // open a internal object using (var bar = this.DisableUI(String.Format("Lade Pdf-Dokument ({0})...", info.Name))) { dataInfo = info; // create access dataAccess = await info.LoadAsync(); dataAccess.DisableUI = () => this.DisableUI("Pdf-Dokument wird bearbeitet..."); dataAccess.DataChanged += async(sender, e) => await LoadDocumentFromObjectAsync(); await LoadDocumentFromObjectAsync(); } break; case null: throw new ArgumentNullException(nameof(data)); default: throw new ArgumentException($"Invalid pdf-data container {data.GetType().Name}.", nameof(data)); } } // proc OpenPdfAsync
} // ctor #region -- Append new object ---------------------------------------------- public void Append(IPpsDataInfo data) { if (sourceRows is IPpsDataView view) { using (var trans = view.Table.DataSet.UndoSink?.BeginTransaction("Datei hinzugefügt.")) { var r = view.NewRow(null, null); r[linkColumnIndex] = data; view.Add(r); trans.Commit(); } } } // proc Append
} // proc SetLoadedDocument private bool ClosePdf() { // clear document pdfViewer.Document = null; // close pdf loadedDocument?.Dispose(); // close object access if (dataAccess != null) { dataAccess.Dispose(); dataAccess = null; } dataInfo = null; return(true); } // func ClosePdf
} // proc AttachRowPropertyChanged private void AttachObjectPropertyChanged() { // disconnect old if (currentLinkedObject is INotifyPropertyChanged pc) { pc.PropertyChanged -= ForwarObjectPropertyChanged; } // connect to new currentLinkedObject = row[linkColumnIndex] as IPpsDataInfo; if (currentLinkedObject is INotifyPropertyChanged pc1) { pc1.PropertyChanged += ForwarObjectPropertyChanged; } // raise events PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Name))); PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(LinkedObject))); } // proc AttachObjectPropertyChanged
/// <summary></summary> /// <param name="dataInfo"></param> public PpsMarkdownDocumentModel(IPpsDataInfo dataInfo) { this.dataInfo = dataInfo; } // ctor