public DynamicPreamble() { InitializeComponent(); txtPreamble.SetHighlighting("Tikz"); txtPreamble.IsReadOnly = true; // setup bindings TheVM = new DynPreambleVM(vm => DynPreambleDialog.ShowDynPreambleDialog(this.ParentForm, vm)); cmdAdd.Click += (s, e) => TheVM.AddCommand.Execute(null); cmdRemove.Click += (s, e) => TheVM.DeleteCommand.Execute(null); cmdUp.Click += (s, e) => TheVM.MoveUpCommand.Execute(null); cmdDown.Click += (s, e) => TheVM.MoveDownCommand.Execute(null); cmdEdit.Click += (s, e) => TheVM.EditCommand.Execute(null); BindingFactory.CreateBinding(TheVM, "Preamble", vm => { txtPreamble.Text = vm.Preamble; txtPreamble.Refresh(); if (PreambleChanged != null) { PreambleChanged(this, new EventArgs()); } }, () => txtPreamble.Text = "<unavailable>"); BindingFactory.CreateIListBinding(TheVM.ElementList, lstItems.Items, (DynPreambleElementVM i) => CreateItemFromVM(i), (ListViewItem lvi) => (lvi as ListViewItem).Tag as DynPreambleElementVM); BindingFactory.CreateBinding(TheVM, "CurrentIndex", vm => { if (vm.CurrentIndex >= 0 && vm.CurrentIndex < lstItems.Items.Count) { lstItems.Items[vm.CurrentIndex].Selected = true; } else { foreach (var i in lstItems.Items.OfType <ListViewItem>()) { i.Selected = false; } } }, null); lstItems.SelectedIndexChanged += (s, e) => TheVM.CurrentIndex = lstItems.SelectedIndices.Count > 0 ? lstItems.SelectedIndices[0] : -1; this.HandleDestroyed += (o, e) => { if (PreamblesFile != null) { TheVM.SavePreambles(PreamblesFile); } }; }
public static bool ShowDynPreambleDialog(IWin32Window owner, DynPreambleElementVM vm) { var dd = new DynPreambleDialog(); dd.txtCode.Text = vm.Code; dd.txtName.Text = vm.Name; var res = dd.ShowDialog(owner); if (res == DialogResult.OK) { vm.Code = dd.txtCode.Text; vm.Name = dd.txtName.Text; } dd.Dispose(); return (res == DialogResult.OK); }
public static bool ShowDynPreambleDialog(IWin32Window owner, DynPreambleElementVM vm) { var dd = new DynPreambleDialog(); dd.txtCode.Text = vm.Code; dd.txtName.Text = vm.Name; var res = dd.ShowDialog(owner); if (res == DialogResult.OK) { vm.Code = dd.txtCode.Text; vm.Name = dd.txtName.Text; } dd.Dispose(); return(res == DialogResult.OK); }