void DeleteColumn(StackPanel block) { int column = (int)block.GetValue(Grid.ColumnProperty); UpdateUndoRedoState(); var items = colDefitions.Elements().Skip(column); var selItem = items.FirstOrDefault(); if (selItem != null) selItem.Remove(); var controls = gridTree .Elements() .Where( element => { var colAttrib = element.Attribute(gridColName) ?? new XAttribute(gridColName, 0); int colAttribValue = 0; if (int.TryParse(colAttrib.Value, out colAttribValue)) return colAttribValue >= column; return false; } ); controls.ForEach(item => MoveColumnItem(item, -1)); RebuildGrid(); }
void DeleteRow(StackPanel block) { int row = (int)block.GetValue(Grid.RowProperty); UpdateUndoRedoState(); var items = rowDefitions.Elements().Skip(row); var selItem = items.FirstOrDefault(); if (selItem != null) selItem.Remove(); var controls = gridTree.Elements() .Where( element => { var rowAttrib = element.Attribute(gridRowName) ?? new XAttribute(gridRowName, 0); int rowAttribValue = 0; if (int.TryParse(rowAttrib.Value, out rowAttribValue)) return rowAttribValue >= row; return false; } ); controls.ForEach(item => MoveRowItem(item, -1)); RebuildGrid(); }
void InsertAfter(StackPanel block) { int column = (int)block.GetValue(Grid.ColumnProperty); UpdateUndoRedoState(); var newColumn = new XElement(colDefName); newColumn.SetAttributeValue(XName.Get("Width"), "*"); var items = colDefitions.Elements().Skip(column); var selItem = items.FirstOrDefault(); if (selItem != null) selItem.AddAfterSelf(newColumn); else colDefitions.Add(newColumn); var controls = gridTree .Elements() .Where( element => { var colAttrib = element.Attribute(gridColName) ?? new XAttribute(gridColName, 0); int colAttribValue = 0; if (int.TryParse(colAttrib.Value, out colAttribValue)) return colAttribValue > column; return false; } ); controls.ForEach(item => MoveColumnItem(item, 1)); RebuildGrid(); }
void InsertBelow(StackPanel block) { UpdateUndoRedoState(); int row = (int)block.GetValue(Grid.RowProperty); var newRow = new XElement(rowDefName); newRow.SetAttributeValue(XName.Get("Height"), "*"); var items = rowDefitions.Elements().Skip(row); var selItem = items.FirstOrDefault(); if (selItem != null) selItem.AddAfterSelf(newRow); else rowDefitions.Add(newRow); var controls = gridTree .Elements() .Where( element => { var rowAttrib = element.Attribute(gridRowName) ?? new XAttribute(gridRowName, 0); int rowAttribValue = 0; if (int.TryParse(rowAttrib.Value, out rowAttribValue)) return rowAttribValue > row; return false; } ); controls.ForEach(item => MoveRowItem(item, 1)); RebuildGrid(); }