public void RemoveRightBindings(BindingNode node) { bool removed = LeftNodes.Remove(node); if (LeftNodes.Count == 0) { RemoveNode(); } }
protected override void RemoveANode(rMindBaseNode node) { var outMax = m_parent.HLines.Where(x => x != this).Max(x => x.LeftNodes.Count); if (LeftNodes.Count > outMax) { /* Если количество занимаемых колонок больше, чем у остальных строк * Нужно удалять колонку грида и сдвинуть все узлы. Кроме своих. */ var nodes = m_parent.HLines.Where(x => x != this).Select(x => x as rMindLine) .Union(m_parent.VLines.Select(x => x as rMindLine)) .Select(x => x.NodesA.Union(x.NodesB)); foreach (var arr in nodes) { foreach (var n in arr) { n.Column--; } } // Среди своих узлов удаляем только те, что правее var offsetNodes = LeftNodes.Union(RightNodes).Where(x => x.Column > node.Column); foreach (var n in offsetNodes) { n.Column--; } if (m_parent.Template.ColumnDefinitions.Count > 1) { m_parent.Template.ColumnDefinitions.Remove( m_parent.Template.ColumnDefinitions.Last() ); } } else { var offsetNodes = LeftNodes.Where(x => x.Column < node.Column); foreach (var n in offsetNodes) { n.Column++; } } LeftNodes.Remove(node); m_parent.UpdateBase(); m_parent.RemoveNode(node); }