/ / WPF Treeview - Comment développer automatiquement les parents et sélectionner un nouveau nœud - c #, wpf, arborescence, datatemplate, hierarchicaldatatemplate

WPF Treeview - Comment développer automatiquement les parents et sélectionner un nouveau nœud - c #, wpf, arborescence, datatemplate, hierarchicaldatatemplate

J'ai des objets modèles mis en place comme suit:

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

Cela me donne un arbre d'objets modèles detaille et profondeur arbitraires. Je les affiche dans un TreeView WPF en utilisant un modèle de données hiérarchique. Grâce à ObservableCollection, je peux ajouter des objets de modèle n'importe où dans l'arborescence du modèle et l'interface utilisateur se mettra à jour en conséquence.

La gêne vient du fait que même si un nouvel objet de modèle peut être ajouté au troisième niveau, par exemple, il peut ne pas être immédiatement visible.

Lorsqu'un nouvel objet de modèle est ajouté n'importe où dans laTree, je voudrais que TreeView sélectionne automatiquement le nouveau nœud et étende ses parents pour qu’il soit immédiatement visible par l’utilisateur. Cela ne semble pas être immédiatement évident.

Ce que je ne veux pas, c’est polluer les objets Model avec des propriétés qui n’ont de sens que dans un contrôle WPF particulier. Je ne veux pas non plus ajouter de propriété parent aux modèles.

Il semble que cela ait dû être abordé auparavant par quelqu'un. Quelqu'un a-t-il une idée sur la façon de s'y attaquer?

Réponses:

0 pour la réponse № 1

Créez 2 propriétés dans votre modèle comme ci-dessous IsExpanded et IsSelected

et dans votre arborescence ItemContainerStyle, ajoutez les réglages ci-dessous

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

Non, chaque fois que vous définissez ces 2 propriétés dans vos modèles de vues, l’arborescence correspondante sera sélectionnée / développée