private SheetViewModel CreatePreviewSheetViewModel() { Debug.WriteLine("CreateSheetViewModel"); SheetViewModel svm = new SheetViewModel(); svm.SetSettings(ModelLocator.Current.Settings.Sheets.GetValueOrDefault(ModelLocator.Current.Settings.DefaultSheet.ToString())); landscapeCheckbox.Checked = svm.Landscape; enableHeader.Checked = svm.Header.Enabled; headerTextBox.Text = svm.Header.Text; enableFooter.Checked = svm.Footer.Enabled; footerTextBox.Text = svm.Footer.Text; topMargin.Value = svm.Margins.Top / 100M; leftMargin.Value = svm.Margins.Left / 100M; rightMargin.Value = svm.Margins.Right / 100M; bottomMargin.Value = svm.Margins.Bottom / 100M; pageSeparator.Checked = svm.PageSepartor; rows.Value = svm.Rows; columns.Value = svm.Columns; padding.Value = svm.Padding / 100M; svm.PropertyChanged += (s, e) => BeginInvoke((Action)(() => { Debug.WriteLine($"SheetViewModel.PropertyChanged: {e.PropertyName}"); switch (e.PropertyName) { case "Landscape": Debug.WriteLine($" Checking checkbox: {ModelLocator.Current.Settings.Sheets.GetValueOrDefault(ModelLocator.Current.Settings.DefaultSheet.ToString()).Landscape}"); landscapeCheckbox.Checked = svm.Landscape; break; case "Header": headerTextBox.Text = svm.Header.Text; break; case "Footer": footerTextBox.Text = svm.Footer.Text; break; case "Margins": topMargin.Value = svm.Margins.Top / 100M; leftMargin.Value = svm.Margins.Left / 100M; rightMargin.Value = svm.Margins.Right / 100M; bottomMargin.Value = svm.Margins.Bottom / 100M; // Keep PrintDocument updated for WinForms.PrintPreview printDoc.PrinterSettings.DefaultPageSettings.Margins = (Margins)svm.Margins.Clone(); break; case "PageSeparator": pageSeparator.Checked = svm.PageSepartor; break; case "Rows": rows.Value = svm.Rows; break; case "Columns": columns.Value = svm.Columns; break; case "Padding": padding.Value = svm.Padding / 100M; break; } })); svm.SettingsChanged += (s, reflow) => BeginInvoke((Action)(() => { Debug.WriteLine($"SheetViewModel.SettingsChanged: {reflow}"); if (reflow) { SheetSettingsChanged(); } else { printPreview.Invalidate(false); } })); printPreview.SheetViewModel = svm; // TODO: Batch Print if (ModelLocator.Current.Options.Files != null && ModelLocator.Current.Options.Files.Any() && !string.IsNullOrEmpty(ModelLocator.Current.Options.Files.ToList()[0])) { List <string> list = ModelLocator.Current.Options.Files.ToList(); file = list[0]; } svm.File = file; this.Text = $"WinPrint - {file}"; return(svm); }