/ / WPF Treeview - Как да разширите автоматично родителите и да изберете нов възел - c #, wpf, treeview, datatemplate, йерархиченdatamplate

WPF Treeview - Как да разширите автоматично родителите и да изберете нов възел - c #, wpf, treeview, datatemplate, йерархиченdatamplate

Имам модели обекти, създадени така:

public class Model
{
public ObservableCollection<Model> Children{get;set;}
public string Name{get;set;}
}

Това ми дава едно дърво на предметни обектипроизволен размер и дълбочина. Показвам ги в WPF TreeView, използвайки йерархичен datatemplate. Благодарение на ObservationCollection, мога да добавям обекти на модел навсякъде в дървото на модела и потребителският интерфейс ще се актуализира съответно.

Дразненето идва, защото въпреки че може да се добави нов модел модел на трето ниво, например, може да не бъде веднага видим.

Когато се добавя нов обект на модел навсякъде вдърво, бих искал TreeView да избере автоматично новия възел и да разшири родителите си така, че да бъде веднага видим за потребителя. Това не изглежда веднага да е очевидно.

Това, което не искам да направя, е да замърся обектите на модела със свойства, които имат смисъл само в конкретен WPF контрол. И не искам да добавям родителска собственост към моделите.

Изглежда, че това е трябвало преди това да се справи с някого. Някой има ли идея как да се справи с това?

Отговори:

0 за отговор № 1

Създайте 2 свойства във вашия модел, както е показано по-долу IsExpanded и IsSelected

и във вашия Treeview ItemContainerStyle добавете долу setters

<Setter Property="IsSelected" Value="{Binding IsSelected}"/>
<Setter Property="IsExpanded" Value="{Binding IsExpanded}"/>

Noe всеки път, когато зададете тези 2 свойства във визуалните ви модели, съответният treeviewitem ще бъде избран / разширен