WPF TreeView выбранный элемент перемещается неправильно при удалении элемента

У меня есть дерево, привязанное к дереву объектов. Когда я удаляю объект из дерева объектов, он корректно удаляется из представления дерева, но поведение дерева по умолчанию состоит в том, чтобы перепрыгивать выбранный элемент до родительского узла удаленного элемента. Как я могу изменить это, чтобы вместо этого перейти к следующему пункту?

РЕДАКТИРОВАТЬ:

Я обновил свой код с предложением Aviad. Вот мой код ..

public class ModifiedTreeView : TreeView
{
    protected override void OnItemsChanged(NotifyCollectionChangedEventArgs e)
    {
        base.OnItemsChanged(e);

        if (e.Action == NotifyCollectionChangedAction.Remove)
        {
            if (e.OldStartingIndex - 1 > 0)
            {
                ModifiedTreeViewItem item = 
                    this.ItemContainerGenerator.ContainerFromIndex(
                    e.OldStartingIndex - 2) as ModifiedTreeViewItem;

                item.IsSelected = true;
            }
        }
    }

    protected override DependencyObject GetContainerForItemOverride()
    {
        return new ModifiedTreeViewItem();
    }

    protected override bool IsItemItsOwnContainerOverride(object item)
    {
        return item is ModifiedTreeViewItem;
    }
}

public class ModifiedTreeViewItem : TreeViewItem
{
    protected override void OnItemsChanged(NotifyCollectionChangedEventArgs e)
    {
        base.OnItemsChanged(e);

        if (e.Action == NotifyCollectionChangedAction.Remove)
        {
            if (e.OldStartingIndex > 0)
            {
                ModifiedTreeViewItem item =
                    this.ItemContainerGenerator.ContainerFromIndex(
                    e.OldStartingIndex - 1) as ModifiedTreeViewItem;

                item.IsSelected = true;
            }
        }
    }

    protected override DependencyObject GetContainerForItemOverride()
    {
        return new ModifiedTreeViewItem();
    }

    protected override bool IsItemItsOwnContainerOverride(object item)
    {
        return item is ModifiedTreeViewItem;
    }
}

Приведенный выше код не работает, если я не отлаживаю его или каким-то образом не замедляю метод OnItemsChanged. Например, если я помещаю thread.sleep (500) внизу метода OnItemsChanged, он работает, в противном случае это не так. Есть идеи, что я делаю не так? Это действительно странно.

Ответы на вопрос(5)

Ваш ответ на вопрос