private void ChangeCurrentDataGridContext()
        {
            if ((m_dataGridContext.ParentDataGridContext == null) ||
                (m_dataGridContext.ParentItem == null))
            {
                return;
            }

            List <DataGridContext> childContexts = this.GetParentItemChildContexts();
            int currentContextIndex = childContexts.IndexOf(m_dataGridContext);

            if (childContexts.Count > 1)
            {
                if (currentContextIndex < (childContexts.Count - 1))
                {
                    // We are not the last context, we'll search for a
                    // non-empty context after us.
                    for (int i = currentContextIndex + 1; i < childContexts.Count; i++)
                    {
                        DataGridContext childContext = childContexts[i];

                        if (childContext.Items.Count == 0)
                        {
                            continue;
                        }

                        childContext.SetCurrentItemCore(childContext.Items.GetItemAt(0), false, this.ShouldSynchronizeSelectionWithCurrent, AutoScrollCurrentItemSourceTriggers.CollectionViewCurrentItemChanged);
                        return;
                    }
                }

                // No context have been found. We'll search for a
                // non-empty context before us.
                for (int i = currentContextIndex - 1; i >= 0; i--)
                {
                    DataGridContext childContext = childContexts[i];

                    int count = childContext.Items.Count;

                    if (count == 0)
                    {
                        continue;
                    }

                    childContext.SetCurrentItemCore(childContext.Items.GetItemAt(count - 1), false, this.ShouldSynchronizeSelectionWithCurrent, AutoScrollCurrentItemSourceTriggers.CollectionViewCurrentItemChanged);
                    return;
                }
            }

            // No context after or before us have been found, we will set the CurrentItem to our ParentItem.
            m_dataGridContext.ParentDataGridContext.SetCurrentItemCore(m_dataGridContext.ParentItem, false, this.ShouldSynchronizeSelectionWithCurrent, AutoScrollCurrentItemSourceTriggers.CollectionViewCurrentItemChanged);
        }