예제 #1
0
        public void RemoveRightBindings(BindingNode node)
        {
            bool removed = LeftNodes.Remove(node);

            if (LeftNodes.Count == 0)
            {
                RemoveNode();
            }
        }
예제 #2
0
        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);
        }