désélectionner et resélectionner un TreeViewItem dans un TreeView
Question
J'ai le problème suivant:
Dans mon TreeView, j'ai ajouté une fonctionnalité de désélection en appelant ma propre méthode deselect () lorsque l'utilisateur clique sur TreeView mais pas sur TreeViewItem. Voici ma méthode TreeView:
public void deselectAll()
{
TreeViewItem item = SelectedItem as TreeViewItem;
if (item != null)
{
this.Focus();
item.IsSelected = false;
}
}
Mon problème est que je ne peux pas resélectionner un TreeViewItem après l'avoir désélectionné.J'ai lu que la focalisation du TreeView lui-même devrait résoudre ce problème, mais ce n'est pas le cas.Cela n'a pas non plus d'importance si je mets le 'Focus ()' avant ou après le 'IsSelected= false'.
Quelqu'un a-t-il une idée de la raison pour laquelle cela ne fonctionne pas?Toute réflexion serait appréciée.
La solution
après avoir défini item.IsSelected= false;vous devez appeler .Focus () pour votre arborescence.
<TreeView MouseLeftButtonDown="TreeView_MouseLeftButtonDown">
<TreeViewItem Header="Employee1">
<TreeViewItem Header="Jesper"/>
<TreeViewItem Header="Aaberg"/>
<TreeViewItem Header="12345"/>
</TreeViewItem>
<TreeViewItem Header="Employee2">
<TreeViewItem Header="Dominik"/>
<TreeViewItem Header="Paiha"/>
<TreeViewItem Header="98765"/>
</TreeViewItem>
</TreeView>
private void TreeView_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
var tv = sender as TreeView;
if (tv != null)
{
var item = (TreeViewItem)tv.SelectedItem;
item.IsSelected = false;
tv.Focus();
}
}
vous avez écrit focus () ne résout pas votre problème.où appelez-vous votre deselectAll ()?
comme solution de contournement, vous pouvez utiliser MouseLeftDown pour définir un élément comme sélectionné.
ps: n'oubliez pas de marquer une réponse comme réponse.