private bool CanDisplayCancelButtonOnTop(GridEditRowModel model) { double offset = this.Owner.Model.RowPool.FrozenContainers.Any() ? this.Owner.Model.RowPool.FrozenContainers.Max(c => c.LayoutSlot.Bottom) : 0; var row = model.Container as DataGridEditRow; return(model.ReadOnlyRowInfo.Slot != 0 && offset <= model.LayoutSlot.Y - row.CancelButton.ActualHeight); }
internal void ArrangeEditRow(GridEditRowModel row) { // TODO: Pass this to the content layer(s) in case needed. var editRow = row.Container as DataGridEditRow; if (editRow != null) { var arrangeRect = row.LayoutSlot; var rect = this.Owner.InflateEditRowVertically(row, arrangeRect); editRow.Arrange(rect.ToRect()); var dispayButtonOnTop = this.CanDisplayCancelButtonOnTop(row); editRow.PositionCloseButton(rect, dispayButtonOnTop, row.IsFrozen); } }