Microsoft.Silverlight.Testing.Controls.TreeViewItem.FindLastFocusableItem C# (CSharp) Method

FindLastFocusableItem() private method

Find the last focusable TreeViewItem contained by this item.
private FindLastFocusableItem ( ) : TreeViewItem
return TreeViewItem
        private TreeViewItem FindLastFocusableItem()
        {
            TreeViewItem item = this;
            TreeViewItem lastItem = null;
            int index = -1;

            // Walk the children of the current item
            while (item != null)
            {
                // Ignore any disabled items
                if (item.IsEnabled)
                {
                    // If the item has no children, it must be the last
                    if (!item.IsExpanded || !item.HasItems)
                    {
                        return item;
                    }

                    // If the item has children, mark it as the last known
                    // focusable item so far and walk into its child items,
                    // starting from the last item and moving toward the first
                    lastItem = item;
                    index = item.Items.Count - 1;
                }
                else if (index > 0)
                {
                    // Try searching for the previous item's sibling
                    index--;
                }
                else
                {
                    // Stop searching if we've run out of children
                    break;
                }

                // Move to the item's previous sibling
                item = lastItem.ItemContainerGenerator.ContainerFromIndex(index) as TreeViewItem;
            }

            return lastItem;
        }