public TableTreeViewItemViewModel(BrowserViewModel browser, DiffDataTable diffTable) : base(browser) { this.diffTable = diffTable; this.diffTable.PropertyChanged += DiffType_PropertyChanged; this.diffTable.SourceItem1.PropertyChanged += SourceItem1_PropertyChanged; this.diffTable.SourceItem2.PropertyChanged += SourceItem2_PropertyChanged; this.header1 = diffTable.Header1; this.header2 = diffTable.Header2; this.viewCommand = new DelegateCommand(this.View); this.isActivated = diffTable.DiffState != DiffState.Unchanged; this.Target = diffTable; foreach (var item in diffTable.Childs) { var viewModel = new TableTreeViewItemViewModel(browser, item); viewModel.PropertyChanged += ChildViewModel_PropertyChanged; this.Items.Add(viewModel); if (this.isActivated == false && viewModel.DiffState != DiffState.Unchanged) { this.isActivated = true; } } this.Dispatcher.InvokeAsync(() => { if (this.DiffState != DiffState.Unchanged && this.Parent != null) { this.Parent.IsExpanded = true; } }); }
private async void Import(TableTreeViewItemViewModel viewModel) { try { var dataTable = viewModel.Source.ExportTable2(); var dataBaseName = this.cremaAppHost.DataBaseName; var dataBase = await this.cremaHost.Dispatcher.InvokeAsync(() => this.cremaHost.DataBases[dataBaseName]); var comment = this.GetComment(viewModel.DisplayName); if (comment == null) { return; } var dialog = new ProgressViewModel(); dialog.DisplayName = viewModel.DisplayName; dialog.ShowDialog(() => { this.cremaHost.Dispatcher.Invoke(() => dataBase.TableContext.Import(this.authenticator, dataTable.DataSet, comment)); }); } catch (Exception e) { AppMessageBox.ShowError(e); } }
protected override void OnSelectionChanged(EventArgs e) { base.OnSelectionChanged(e); if (this.selectedTable != null) { this.selectedTable.PropertyChanged -= SelectedTable_PropertyChanged; } this.propertyService.SelectedObject = this.SelectedItem; this.selectedTable = this.SelectedItem as TableTreeViewItemViewModel; if (this.selectedTable != null) { this.selectedTable.PropertyChanged += SelectedTable_PropertyChanged; } this.NotifyOfPropertyChange(nameof(this.CanImport)); }
public void UpdateItemsSource() { var compositionService = this.ServiceProvider.GetService(typeof(ICompositionService)) as ICompositionService; var typesCategory = new CategoryTreeViewItemViewModel("types"); compositionService.SatisfyImportsOnce(typesCategory); foreach (var item in this.dataSet.Types) { var viewModel = new TypeTreeViewItemViewModel(this, item); compositionService.SatisfyImportsOnce(viewModel); typesCategory.Items.Add(viewModel); } this.Items.Add(typesCategory); var templatesCategory = new CategoryTreeViewItemViewModel("templates"); compositionService.SatisfyImportsOnce(templatesCategory); foreach (var item in this.dataSet.Tables) { if (item.TemplatedParent != null) { continue; } var viewModel = new TemplateTreeViewItemViewModel(this, item.Template); compositionService.SatisfyImportsOnce(viewModel); templatesCategory.Items.Add(viewModel); } this.Items.Add(templatesCategory); var tablesCategory = new CategoryTreeViewItemViewModel("tables"); compositionService.SatisfyImportsOnce(tablesCategory); foreach (var item in this.dataSet.Tables) { var viewModel = new TableTreeViewItemViewModel(this, item); compositionService.SatisfyImportsOnce(viewModel); tablesCategory.Items.Add(viewModel); } this.Items.Add(tablesCategory); }