public CsvTextEditorControl() { #pragma warning disable IDISP001 // Dispose created var serviceLocator = this.GetServiceLocator(); #pragma warning restore IDISP001 // Dispose created _typeFactory = serviceLocator.ResolveType <ITypeFactory>(); _synchronizationService = _typeFactory.CreateInstanceWithParametersAndAutoCompletion <CsvTextSynchronizationService>(); serviceLocator.RegisterInstance(_synchronizationService, this); CreateRoutedCommandBinding(Paste, () => CsvTextEditorInstance?.Paste()); CreateRoutedCommandBinding(Cut, () => CsvTextEditorInstance?.Cut()); CreateRoutedCommandBinding(Copy, () => CsvTextEditorInstance?.Copy()); CreateRoutedCommandBinding(GotoNextColumn, () => CsvTextEditorInstance?.ExecuteOperation <GotoNextColumnOperation>()); CreateRoutedCommandBinding(GotoPreviousColumn, () => CsvTextEditorInstance?.ExecuteOperation <GotoPreviousColumnOperation>()); CreateRoutedCommandBinding(Undo, () => CsvTextEditorInstance?.Undo(), () => CsvTextEditorInstance?.CanUndo == true); CreateRoutedCommandBinding(Redo, () => CsvTextEditorInstance?.Redo(), () => CsvTextEditorInstance?.CanRedo == true); CreateRoutedCommandBinding(AddLine, () => CsvTextEditorInstance?.ExecuteOperation <AddLineOperation>()); CreateRoutedCommandBinding(RemoveLine, () => CsvTextEditorInstance?.ExecuteOperation <RemoveLineOperation>()); CreateRoutedCommandBinding(DuplicateLine, () => CsvTextEditorInstance?.ExecuteOperation <DuplicateLineOperation>()); CreateRoutedCommandBinding(RemoveColumn, () => CsvTextEditorInstance?.ExecuteOperation <RemoveColumnOperation>()); CreateRoutedCommandBinding(AddColumn, () => CsvTextEditorInstance?.ExecuteOperation <AddColumnOperation>()); CreateRoutedCommandBinding(QuoteColumn, () => CsvTextEditorInstance?.ExecuteOperation <QuoteColumnOperation>()); CreateRoutedCommandBinding(DeleteNextSelectedText, () => CsvTextEditorInstance?.DeleteNextSelectedText()); CreateRoutedCommandBinding(DeletePreviousSelectedText, () => CsvTextEditorInstance?.DeletePreviousSelectedText()); }
private void OnTextEditorControlPropertyChanged(object sender, PropertyChangedEventArgs args) { var textEditorControl = AssociatedObject; if (args.PropertyName != nameof(textEditorControl.Scope)) { return; } var serviceLocator = this.GetServiceLocator(); var scope = textEditorControl.Scope; _csvTextSynchronizationService = serviceLocator.ResolveType <ICsvTextSynchronizationService>(scope); }
protected override void OnAssociatedObjectUnloaded() { var textEditorControl = AssociatedObject; _csvTextSynchronizationService = null; textEditorControl.PropertyChanged -= OnTextEditorControlPropertyChanged; var textEditor = AssociatedObject?.TextEditor; if (textEditor == null) { return; } textEditor.TextChanged -= OnTextChanged; base.OnAssociatedObjectUnloaded(); }
private void OnScopeChanged() { var scope = Scope; if (scope == null) { _csvTextEditorService = null; _csvTextSynchronizationService = null; return; } if (_csvTextEditorService == null && _serviceLocator.IsTypeRegistered <ICsvTextEditorService>(scope)) { _csvTextEditorService = _serviceLocator.ResolveType <ICsvTextEditorService>(scope); } if (_csvTextSynchronizationService == null && _serviceLocator.IsTypeRegistered <ICsvTextSynchronizationService>(scope)) { _csvTextSynchronizationService = _serviceLocator.ResolveType <ICsvTextSynchronizationService>(scope); } UpdateInitialization(); }