J'ai un élément d'arboresview en tant que tel dans un arborescence dans un arborescence qui aura une liste lié à celle-ci: Je ne peux pas comprendre comment obtenir chacun de ses enfants d'avoir un événement de double clic . P> Toute aide est appréciée. merci beaucoup. p> p>
3 Réponses :
<TreeView.ItemContainerStyle> <Style TargetType="{x:Type TreeViewItem}"> <EventSetter Event="MouseDoubleClick" Handler="OnItemMouseDoubleClick" /> ...
Hein. C'était beaucoup plus facile que prévu.
private void OnItemMouseDoubleClick(object sender, MouseButtonEventArgs args) { if (sender is TreeViewItem) { if (!((TreeViewItem)sender).IsSelected) { return; } } .... do stuff. }
Merci - maintenant je sais qu'il n'y a pas besoin de faire la recherche à la hausse dans l'arbre visuel pour rechercher un TreeItem, si votre événement est défini sur l'élémentContainerStyle.
C'est la seule façon dont j'ai réussi à le faire fonctionner pour tous les cas:
void MyTreeView_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e) { var clickedItem = TryGetClickedItem(myTreeView, e); if (clickedItem == null) return; e.Handled = true; // to cancel expanded/collapsed toggle DoStuff(clickedItem); } TreeViewItem TryGetClickedItem(TreeView treeView, MouseButtonEventArgs e) { var hit = e.OriginalSource as DependencyObject; while (hit != null && !(hit is TreeViewItem)) hit = VisualTreeHelper.GetParent(hit); return hit as TreeViewItem; }
Plus simple, au lieu de votre trygetClickeditem code>, je viens d'utiliser
hit.getvisualparent