J'utilise un modèle de présentation pour implémenter la navigation dans mon application avec le contrôle TreeView
. J'ai la propriété IsSelected de TreeViewItem
liée à mon modèle de vue via une liaison bidirectionnelle. Quand un nœud qui a des enfants est sélectionné, je veux que le premier enfant de ce nœud soit sélectionné à la place de celui sur lequel on clique. Il semble que le TreeViewItem
n'écoute pas l'événement de modification de propriété lorsqu'il définit la propriété IsSelected sur mon modèle de présentation. Le premier noeud enfant est sélectionné, mais le noeud parent n'est pas désélectionné. Voici le code de mon modèle de présentation.WPF TreeView souhaite sélectionner le premier enfant lorsque parent est sélectionné
public bool IsSelected {
get {
return this._isSelected;
}
set {
if(this._isSelected != value) {
this._isSelected = value;
if(this.Nodes.Count > 0) {
this._isSelected = false;
this.Nodes[0].IsSelected = true;
}
this.NotifyPropertyChanged("IsSelected");
}
}
}
Et voici le style de mon TreeViewItem
:
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
</Style>
Cela a fonctionné. J'ai eu le même problème que awilinsk lors de la sélection d'un usercontrol dans un treeviewitem. Le contrôle de l'utilisateur était en train de se concentrer manuellement sur un élément et cela a causé le problème de double sélection. Merci, j'ai passé trop de temps là-dessus. – kimphamg