2009-10-08 2 views
2

У меня есть сортированный древовидный вид с большим количеством предметов. Когда я добавляю новый элемент, я бы хотел, чтобы новый элемент был выбран и отображен на экране. Например: если я вижу первые 10 элементов на экране, а новый элемент добавляется на 20-ю позицию, тогда представление должно измениться, чтобы представить новый добавленный элемент (он может быть первым на экране, последним или в середина - это не имеет значения). Я могу получить отбор, работая после чтения некоторых сообщений в блоге. Пожалуйста, помогите мне узнать, как достичь желаемой функциональности, связанной с показом на экране.WPF TreeView фокусируется на недавно добавленном элементе

Лукаш Glaz

ответ

4

Я предлагаю вам взглянуть на this article, где автор показывает, как использовать прикрепленное поведение. С помощью этого поведения, вы можете сделать все, что в XAML:

<TreeView.ItemContainerStyle> 
    <Style TargetType="{x:Type TreeViewItem}"> 
    <Setter 
     Property="local:TreeViewItemBehavior.IsBroughtIntoViewWhenSelected" 
     Value="True" 
     /> 
    </Setter> 
    </Style> 
    </TreeView.ItemContainerStyle> 

Где IsBroughtIntoViewWhenSelected это вложенное свойство.

+0

Благодарим за решение. Он отлично работает, когда виртуализация отключена. Когда включена виртуализация, и я добавляю несколько элементов, прокручивайте бит вверх и вниз, тогда приложение, похоже, замерзает в каком-то цикле: текущий выбранный элемент перемещается вверх и вниз, и его невозможно остановить. – GUZ

+0

Я нашел решение проблемы с виртуализацией в следующем месте: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/31ea27c0-32bf-4fae-a806-204f06c198b8 – GUZ

0

Если вы уже получили TreeViewItem, соответствующий вашему вновь добавленный элемент, все, что вам нужно сделать, это позвонить yourItem.BringIntoView().

+1

Как с этим работать, когда я использую шаблон mvvm, и я напрямую не рассматриваю TreeViewItems? – GUZ

Смежные вопросы