public void OnModelUpdated(FastGridControl target, IUnityContainer container) { var dataGrid = container.Resolve <FastGridControl>(Key); if (target.Model == null || target != dataGrid) { return; } var locationGrid = container.Resolve <Grid>(Key); if (locationGrid == null) { return; } var rowCount = target.Model.RowCount - target.Model.GetHiddenRows(target).Count; var colCount = target.Model.ColumnCount; UpdateLocationGridDefinisions(locationGrid, locationGrid.RenderSize, rowCount, colCount); var viewport = container.Resolve <Rectangle>(Key); RecalculateViewport(viewport, target); var colorMap = CreateColorMap(target); UpdateLocationGridColors(locationGrid, colorMap, viewport); target.NotifyRefresh(); }
public void OnSelectedCellChanged(FastGridControl target, IUnityContainer container) { var dataGrid = container.Resolve <FastGridControl>(Key); if (target == dataGrid) { return; } var targetCell = new FastGridCellAddress(target.CurrentCell.Row, target.CurrentCell.Column); if (!targetCell.Equals(dataGrid.CurrentCell)) { if (dataGrid.Model == null) { return; } if (dataGrid.Model.RowCount < targetCell.Row || dataGrid.Model.ColumnCount < targetCell.Column) { return; } dataGrid.CurrentCell = targetCell; if (target.GetSelectedModelCells().Aggregate(false, (r, c) => r |= dataGrid.AddSelectedCell(c))) { dataGrid.InvalidateAll(); } } var valuteTextBox = container.ResolveAll <RichTextBox>(); }
private static List <Dictionary <int, Color?> > CreateColorMap(FastGridControl dataGrid) { var ret = new List <Dictionary <int, Color?> >(); if (dataGrid.Model == null) { return(ret); } var model = dataGrid.Model as DiffGridModel; var rowCount = model.RowCount - model.GetHiddenRows(dataGrid).Count; for (int i = 0; i < rowCount; i++) { var columnColorMap = new Dictionary <int, Color?>(); for (int j = 0, ccount = dataGrid.Model.ColumnCount; j < ccount; j++) { columnColorMap.Add(j, model.GetCell(dataGrid, i, j, true)?.BackgroundColor); } ret.Add(columnColorMap); } return(ret); }
private void DataGrid_SelectedCellsChanged(object sender, FastWpfGrid.SelectionChangedEventArgs e) { var grid = copyTargetGrid = sender as FastGridControl; if (grid == null) { return; } copyTargetGrid = grid; DataGridEventDispatcher.DispatchSelectedCellChangeEvent(grid, container); if (!SrcDataGrid.CurrentCell.Row.HasValue || !DstDataGrid.CurrentCell.Row.HasValue) { return; } if (!SrcDataGrid.CurrentCell.Column.HasValue || !DstDataGrid.CurrentCell.Column.HasValue) { return; } if (SrcDataGrid.Model == null || DstDataGrid.Model == null) { return; } var srcValue = (SrcDataGrid.Model as DiffGridModel).GetCellText(SrcDataGrid.CurrentCell.Row.Value, SrcDataGrid.CurrentCell.Column.Value, true); var dstValue = (DstDataGrid.Model as DiffGridModel).GetCellText(DstDataGrid.CurrentCell.Row.Value, DstDataGrid.CurrentCell.Column.Value, true); UpdateValueDiff(srcValue, dstValue); }
public void OnColumnHeaderReset(FastGridControl target, IUnityContainer container) { var dataGrid = container.Resolve <FastGridControl>(Key); (dataGrid.Model as DiffGridModel).SetColumnHeader(0); dataGrid.NotifyRowArrangeChanged(); }
public void OnRowHeaderReset(FastGridControl target, IUnityContainer container) { var dataGrid = container.Resolve <FastGridControl>(Key); (dataGrid.Model as DiffGridModel).SetRowHeader(-1); dataGrid.NotifyColumnArrangeChanged(); DataGridEventDispatcher.DispatchModelUpdateEvent(dataGrid, container); }
private void CopyRow_Click(object sender, RoutedEventArgs e) { // 复制整行 FastGridControl selectGridControl = null; var menuItem = sender as MenuItem; if (menuItem != null) { selectGridControl = ((ContextMenu)menuItem.Parent).PlacementTarget as FastGridControl; } if (selectGridControl != null) { int?row = selectGridControl.CurrentRow; int?col = selectGridControl.CurrentColumn; var selectModel = selectGridControl.Model as DiffGridModel; if (selectModel == null) { return; } var diffType = selectModel.DiffType; // 修改 diff 数据(这部分可以只用来刷新表现) foreach (var excelCellDiff in SheetDiff.Rows[row.Value].Cells) { var diffCell = excelCellDiff.Value; if (diffType == DiffType.Source) { // 从左复制到右 diffCell.DstCell.Value = diffCell.SrcCell.Value; diffCell.MergeStatus = ExcelCellMergeStatus.UseLeft; } else { // 从右复制到左 diffCell.SrcCell.Value = diffCell.DstCell.Value; diffCell.MergeStatus = ExcelCellMergeStatus.UseRight; } } // diffCell.Status = ExcelCellStatus.None; RefreshBySheet(false, true); UpdateLayout(); } }
public void OnSizeChanged(FastGridControl target, IUnityContainer container, SizeChangedEventArgs e) { var dataGrid = container.Resolve <FastGridControl>(Key); if (dataGrid == null || dataGrid != target) { return; } RecalculateViewport(container.Resolve <Rectangle>(Key), dataGrid); }
private void RecalculateViewport(Rectangle viewport, FastGridControl dataGrid) { if (dataGrid.VisibleColumnCount <= 0 || dataGrid.VisibleRowCount <= 0) { return; } Grid.SetColumn(viewport, dataGrid.FirstVisibleColumnScrollIndex); Grid.SetColumnSpan(viewport, dataGrid.VisibleColumnCount); Grid.SetRow(viewport, dataGrid.FirstVisibleRowScrollIndex); Grid.SetRowSpan(viewport, dataGrid.VisibleRowCount); }
public void OnScrolled(FastGridControl target, IUnityContainer container) { var dataGrid = container.Resolve <FastGridControl>(Key); if (dataGrid == null || dataGrid == target) { return; } SyncScroll(target, dataGrid); RecalculateViewport(container.Resolve <Rectangle>(Key), dataGrid); }
private void DataGrid_SelectedCellsChanged(object sender, FastWpfGrid.SelectionChangedEventArgs e) { var grid = copyTargetGrid = sender as FastGridControl; if (grid == null) { return; } copyTargetGrid = grid; var args = new DiffViewEventArgs <FastGridControl>(sender as FastGridControl, container); DataGridEventDispatcher.Instance.DispatchSelectedCellChangeEvent(args); if (!SrcDataGrid.CurrentCell.Row.HasValue || !DstDataGrid.CurrentCell.Row.HasValue) { return; } if (!SrcDataGrid.CurrentCell.Column.HasValue || !DstDataGrid.CurrentCell.Column.HasValue) { return; } if (SrcDataGrid.Model == null || DstDataGrid.Model == null) { return; } var srcValue = (SrcDataGrid.Model as DiffGridModel).GetCellText(SrcDataGrid.CurrentCell.Row.Value, SrcDataGrid.CurrentCell.Column.Value, true); var dstValue = (DstDataGrid.Model as DiffGridModel).GetCellText(DstDataGrid.CurrentCell.Row.Value, DstDataGrid.CurrentCell.Column.Value, true); UpdateValueDiff(srcValue, dstValue); if (App.Instance.Setting.AlwaysExpandCellDiff) { var a = new DiffViewEventArgs <RichTextBox>(null, container, TargetType.First); ValueTextBoxEventDispatcher.Instance.DispatchGotFocusEvent(a); } int?row = DstDataGrid.CurrentCell.Row; int?column = DstDataGrid.CurrentCell.Column; if (mergeWindow != null) { mergeWindow.SetCurrentCell(row, column); } }
public void DataGrid_SelectedCellsChanged(object sender, FastWpfGrid.SelectionChangedEventArgs e) { var grid = copyTargetGrid = sender as FastGridControl; if (grid == null) { return; } copyTargetGrid = grid; var args = new DiffViewEventArgs <FastGridControl>(sender as FastGridControl, container); DataGridEventDispatcher.Instance.DispatchSelectedCellChangeEvent(args); if (!MergeDataGrid.CurrentCell.Row.HasValue) { return; } if (!MergeDataGrid.CurrentCell.Column.HasValue) { return; } if (MergeDataGrid.Model == null) { return; } var value = (MergeDataGrid.Model as DiffGridModel).GetCellText(MergeDataGrid.CurrentCell.Row.Value, MergeDataGrid.CurrentCell.Column.Value, true); UpdateValue(value); if (App.Instance.Setting.AlwaysExpandCellDiff) { var a = new DiffViewEventArgs <RichTextBox>(null, container, TargetType.First); ValueTextBoxEventDispatcher.Instance.DispatchGotFocusEvent(a); } if (_diffView != null) { _diffView.SetCurrentCell(MergeDataGrid.CurrentCell.Row, MergeDataGrid.CurrentCell.Column); } }
private void CopyRow_Click(object sender, RoutedEventArgs e) { // 复制整行 FastGridControl selectGridControl = null; var menuItem = sender as MenuItem; if (menuItem != null) { selectGridControl = ((ContextMenu)menuItem.Parent).PlacementTarget as FastGridControl; } if (selectGridControl != null) { int?row = selectGridControl.CurrentRow; int?col = selectGridControl.CurrentColumn; var selectModel = selectGridControl.Model as DiffGridModel; if (selectModel == null) { return; } var diffType = selectModel.DiffType; if (diffType == DiffType.Source) { // 左から右へマージ SheetDiff.Merge(row.Value, ExcelCellMergeStatus.UseLeft); } else { // 右から左へマージ SheetDiff.Merge(row.Value, ExcelCellMergeStatus.UseRight); } RefreshBySheet(false, true); UpdateLayout(); } }
public static void DispatchScrollEvnet(FastGridControl target, IUnityContainer container) { Listeners.ForEach(l => l.OnScrolled(target, container)); }
public static void DispatchColumnHeaderChangeEvent(FastGridControl target, IUnityContainer container) { Listeners.ForEach(l => l.OnColumnHeaderChanged(target, container)); }
public static void DispatchSizeChangeEvent(FastGridControl target, IUnityContainer contaier, SizeChangedEventArgs e) { Listeners.ForEach(l => l.OnSizeChanged(target, contaier, e)); }
public static void DispatchModelUpdateEvent(FastGridControl target, IUnityContainer container) { Listeners.ForEach(l => l.OnModelUpdated(target, container)); }
public static void DispatchSelectedCellChangeEvent(FastGridControl target, IUnityContainer container) { Listeners.ForEach(l => l.OnSelectedCellChanged(target, container)); }
private void SyncScroll(FastGridControl src, FastGridControl dst) { dst.Scroll(src.FirstVisibleRowScrollIndex, src.FirstVisibleColumnScrollIndex, src.VerticalScrollBarOffset, src.HorizontalScrollBarOffset); }
public static void DispatchRowHeaderResetEvent(FastGridControl target, IUnityContainer container) { Listeners.ForEach(l => l.OnRowHeaderReset(target, container)); }