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, он работает, в противном случае это не так. Есть идеи, что я делаю не так? Это действительно странно.