/// <inheritdoc/> protected override void OnIsKeyboardFocusWithinChanged(DependencyPropertyChangedEventArgs e) { base.OnIsKeyboardFocusedChanged(e); var p = DataPresenter?.GetService <Presenter>(); if (p == null) { return; } Refresh(p); if ((bool)e.NewValue) { p.OnFocused(this); } }
public ColumnValueBag[] Submit() { RowValidation.SetAsyncErrors(DataValidationResults.Empty); if (!SubmitInput()) { return(null); } var result = new ColumnValueBag[DataSet.Count]; var serializers = GetColumnSerializers(); var validationResults = DataValidationResults.Empty; for (int i = 0; i < DataSet.Count; i++) { var validationErrors = DataValidationErrors.Empty; var columnValueBag = new ColumnValueBag(); result[i] = columnValueBag; for (int j = 0; j < serializers.Count; j++) { var serializer = serializers[j]; if (serializer == null) { continue; } var textColumn = _.TextColumns[j]; try { serializer.Deserialize(textColumn[i], columnValueBag); } catch (Exception ex) { validationErrors = validationErrors.Add(new DataValidationError(ex.Message, textColumn)); } } if (validationErrors.Count > 0) { validationResults = validationResults.Add(new DataValidationResult(DataSet[i], validationErrors)); } } if (validationResults.Count > 0) { RowValidation.SetAsyncErrors(validationResults); return(null); } var pasteAppendService = _sourcePresenter.GetService <DataView.IPasteAppendService>(false); if (pasteAppendService != null && !pasteAppendService.Verify(result)) { return(null); } return(result); }
public void Show(DataPresenter target) { var sortings = GetSortings(target.GetService <ColumnHeader.ISortService>()); _presenter = new Presenter(target); _presenter.Show(_dataView, sortings); Owner = GetWindow(target.View); ShowDialog(); }
private void ExecToggleSortDirection(object sender, ExecutedRoutedEventArgs e) { var columnHeader = (ColumnHeader)sender; var direction = Toggle(columnHeader.SortDirection); var sortService = DataPresenter.GetService <ISortService>(); if (direction == null) { sortService.OrderBy = null; } else { sortService.OrderBy = new IColumnComparer[] { DataRow.OrderBy(columnHeader.Column, direction.GetValueOrDefault() == ListSortDirection.Ascending ? Data.SortDirection.Ascending : Data.SortDirection.Descending) } }; }
private RowPresenter[] GetSelectedRows() { var presenter = DataPresenter.GetService <Presenter>(); var startRowIndex = presenter.StartSelectedRowIndex; var endRowIndex = presenter.EndSelectedRowIndex; Debug.Assert(SelectedRowsCount > 0); var result = new RowPresenter[SelectedRowsCount]; var index = 0; for (int i = startRowIndex; i <= endRowIndex; i++) { var row = DataPresenter.Rows[i]; if (!row.IsVirtual) { result[index++] = row; } } return(result); }
private ListSortDirection?GetSortDirection(DataPresenter dataPresenter) { if (!CanSort) { return(null); } var orderBy = dataPresenter.GetService <ISortService>()?.OrderBy; if (orderBy == null || orderBy.Count == 0) { return(null); } for (int i = 0; i < orderBy.Count; i++) { var columnComparer = orderBy[i]; if (columnComparer.GetColumn(dataPresenter.DataSet.Model) == Column) { return(ToListSortDirection(columnComparer.Direction)); } } return(null); }
private ColumnSerializer[] GetSelectedColumnSerializers() { var presenter = DataPresenter.GetService <Presenter>(); var startBindingIndex = presenter.StartSelectedBindingIndex; Debug.Assert(startBindingIndex >= 0); var endBindingIndex = presenter.EndSelectedBindingIndex; var gridCellBindings = presenter.GridCellBindings; var result = new ColumnSerializer[SelectedColumnsCount]; int index = 0; for (int i = startBindingIndex; i <= endBindingIndex; i++) { var rowBinding = gridCellBindings[i]; var serializableColumns = rowBinding.SerializableColumns; for (int j = 0; j < serializableColumns.Count; j++) { result[index++] = DataPresenter.GetSerializer(serializableColumns[j]); } } return(result); }
private ICommandService GetCommandService(DataPresenter dataPresenter) { return(dataPresenter.GetService <ICommandService>()); }
private void ExecLookup() { var lookupService = DataPresenter?.GetService <ILookupService>(); lookupService.BeginLookup(this); }