Пример #1
0
        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);
        }
Пример #2
0
        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;
            }
        }
Пример #3
0
        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);
        }
Пример #4
0
        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;
            }
        }
Пример #6
0
        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);
        }
Пример #7
0
        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;
            }
        }
Пример #9
0
        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);
        }
Пример #10
0
        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);
            }
        }
Пример #11
0
        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);
        }
Пример #12
0
 internal override bool IsCellValid(GridCellEditorModel editor)
 {
     return(this.IsCellValid(editor.ParentRow.ItemInfo.Item));
 }
Пример #13
0
 private void ArrangeEditorCell(GridCellEditorModel cell)
 {
     this.EditRowLayer.ArrangeCell(cell);
 }
Пример #14
0
 internal virtual bool IsCellValid(GridCellEditorModel editor)
 {
     return(true);
 }
Пример #15
0
 internal abstract void ClearEditorContainer(GridCellEditorModel editor);
Пример #16
0
 internal abstract void PrepareEditorContainer(GridCellEditorModel editor);