RadSize IElementPresenter.MeasureContent(object owner, object content) { GridRowModel row = owner as GridRowModel; if (row != null) { return(this.MeasureRow(row)); } GridHeaderCellModel headerCell = owner as GridHeaderCellModel; if (headerCell != null) { return(this.MeasureHeaderCell(headerCell)); } GridCellEditorModel editCell = owner as GridCellEditorModel; if (editCell != null) { return(this.MeasureEditCell(editCell)); } GridCellModel cell = owner as GridCellModel; if (cell != null) { return(this.MeasureCell(cell)); } return(RadSize.Empty); }
internal override void ClearEditorContainer(GridCellEditorModel editor) { if (!this.CanEdit) { return; } var pair = editor.Container as Tuple <FrameworkElement, FrameworkElement, FrameworkElement>; var control = pair.Item1 as Control; if (control != null) { control.IsTabStop = false; } this.ClearEditorContentVisual(pair.Item1); var validation = pair.Item3 as ValidationControl; if (validation != null) { validation.Validating -= this.OnCellValidating; } }
internal virtual RadSize MeasureEditCell(GridCellEditorModel cell, double availableWidth) { if (!this.CanEdit) { return(this.MeasureCell(cell, availableWidth)); } // This method is called by the XamlContentLayer RadSize size = RadSize.Empty; if (this.sizeModeCache == DataGridColumnSizeMode.Fixed) { availableWidth = this.widthCache; } var pair = cell.Container as Tuple <FrameworkElement, FrameworkElement, FrameworkElement>; if (pair != null) { size = this.MeasureCellContainer(availableWidth, pair.Item1).ToRadSize(); pair.Item2.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity)); } if (this.sizeModeCache == DataGridColumnSizeMode.Fixed) { size.Width = this.widthCache; } return(size); }
internal RadRect InflateEditCellHorizontally(GridCellEditorModel cell, RadRect rect) { if (cell.Column.ItemInfo.Id > 0) { var thickness = this.HasVerticalGridLines ? this.gridLinesThicknessCache : 0; rect.X += thickness; rect.Width -= thickness; } return(rect); }
internal override void PrepareEditorContainer(GridCellEditorModel editor) { Tuple <FrameworkElement, FrameworkElement, FrameworkElement> pair = editor.Container as Tuple <FrameworkElement, FrameworkElement, FrameworkElement>; InvalidateCellUI(pair.Item2); if (pair.Item2 != null) { pair.Item2.DataContext = editor.Value; } }
private RadSize MeasureEditCell(GridCellEditorModel cell) { var layer = this.EditRowLayer; // TODO: consider if content needs to be measured with constraint in stretch mode. var availableWidth = cell.Column.SizeMode == DataGridColumnSizeMode.Fixed ? cell.Column.Width : double.PositiveInfinity; RadSize size = GridModel.DoubleArithmetics.Ceiling(layer.MeasureCell(cell, availableWidth).ToRadSize()); cell.Column.AutoWidth = Math.Max(cell.Column.AutoWidth, size.Width); cell.DesiredSize = new RadSize(cell.Column.AutoWidth, size.Height); return(cell.DesiredSize); }
internal RadRect InflateEditCellVertically(GridCellEditorModel cell, RadRect rect) { var row = cell.ParentRow as GridEditRowModel; if (row != null && this.decorationLayerCache != null) { var thickness = this.HasHorizontalGridLines ? this.gridLinesThicknessCache : 0; if (this.decorationLayerCache.HasHorizontalLine(row.ReadOnlyRowInfo)) { rect.Y += thickness; } } return(rect); }
internal override void ClearEditorContainer(GridCellEditorModel editor) { Tuple <FrameworkElement, FrameworkElement, FrameworkElement> pair = editor.Container as Tuple <FrameworkElement, FrameworkElement, FrameworkElement>; var control = pair.Item2 as Control; if (control != null) { control.IsTabStop = false; } if (pair.Item2 != null) { pair.Item2.DataContext = null; } }
internal override void PrepareEditorContainer(GridCellEditorModel editor) { if (!this.CanEdit) { this.PrepareCell(editor); return; } var binding = new Binding() { Path = new PropertyPath(this.PropertyName), Mode = BindingMode.TwoWay, Source = editor.ParentRow.ItemInfo.Item }; var pair = editor.Container as Tuple <FrameworkElement, FrameworkElement, FrameworkElement>; if (pair == null) { return; } var validation = pair.Item3 as ValidationControl; if (validation != null) { validation.PropertyName = this.PropertyName; validation.DataItem = editor.ParentRow.ItemInfo.Item; validation.Validating += this.OnCellValidating; } var control = pair.Item1 as Control; if (control != null) { control.IsTabStop = true; control.TabIndex = this.CollectionIndex; } pair.Item1.Style = this.cellEditorStyleCache != null ? this.cellEditorStyleCache : this.DefaultCellEditorStyle; editor.EditorHost = pair.Item2; this.PrepareEditorContentVisual(pair.Item1, binding); }
void IGridView.Arrange(Node node) { GridEditRowModel editRow = node as GridEditRowModel; if (editRow != null) { this.ArrangeEditRow(editRow); return; } GridRowModel row = node as GridRowModel; if (row != null) { RadDataGrid.ArrangeRow(row); return; } GridHeaderCellModel headerCell = node as GridHeaderCellModel; if (headerCell != null) { this.ArrangeHeaderCell(headerCell); return; } GridCellEditorModel editCell = node as GridCellEditorModel; if (editCell != null) { this.ArrangeEditorCell(editCell); } GridCellModel cell = node as GridCellModel; if (cell != null) { this.ArrangeCell(cell); } }
internal override RadSize MeasureEditCell(GridCellEditorModel cell, double availableWidth) { // This method is called by the XamlContentLayer RadSize size = RadSize.Empty; if (this.SizeMode == DataGridColumnSizeMode.Fixed) { availableWidth = this.Width; } var pair = cell.Container as Tuple <FrameworkElement, FrameworkElement, FrameworkElement>; if (pair != null) { size = this.MeasureCellContainer(availableWidth, pair.Item1).ToRadSize(); } if (this.SizeMode == DataGridColumnSizeMode.Fixed) { size.Width = this.Width; } return(size); }
internal override bool IsCellValid(GridCellEditorModel editor) { return(this.IsCellValid(editor.ParentRow.ItemInfo.Item)); }
private void ArrangeEditorCell(GridCellEditorModel cell) { this.EditRowLayer.ArrangeCell(cell); }
internal virtual bool IsCellValid(GridCellEditorModel editor) { return(true); }
internal abstract void ClearEditorContainer(GridCellEditorModel editor);
internal abstract void PrepareEditorContainer(GridCellEditorModel editor);