Événement WPF Listview SelectionChanged
J'ai un ListView
la liaison à un ItemsSource
.
Pourquoi le SelectionChanged
cas de tir de la charge lié aux données d'événements? Je suppose que c'est parce qu'un "défaut" éléments ie indice 0 est sélectionné.
Comment puis-je désactiver cette option, parce que lors de la sélection d'un élément mis à jour d'autres sources de données.
Merci
Petrus
source d'informationauteur Petrus
Vous devez vous connecter pour publier un commentaire.
La liste devrait pas déclencher le SelectionChange si vous ne définissez la propriété ItemsSource. Toutefois, si vous liez la propriété SelectedIndex une propriété dataContext objet la sélection se déplacer à l'index spécifié par la lier à la propriété.
ce n'est pas les feux de la Selector_OnSelectionChanged événement lors du chargement de la page:
mais ce n':
parce que le SelectedIndex est défini à l'SelecteIndexValue grâce à la liaison.
Pour éviter cela et de toujours garder les liaisons dans votre balisage définir la SelectedIndexValue de votre dataContext objet de -1 avant de liaison (Avant InitializeComponent() est appelée dans votre formulaire de constructeur).
Espère que cette aide.
merci pour les réponses.
Quand je mets un point d'arrêt sur l'événement SelectionChanged, il se casse les procédures avant que l'écran est entièrement chargé. Vous verrez également que la première ligne est "sélectionné" par la suite sur la liste. Je ne suis pas de liaison à un SelectedIndexValue comme vous pouvez le voir dans le code. Le DataContext de la liste est un ReadonlyCollection
Dans mon SelectionChanged événement comme vous pouvez le voir j'ai avertir d'autres objets à être chargé avec des données relatives à l'élément sélectionné. Je veux seulement que cela arrive quand on est sélectionné, mais pas un défaut, celui d'être ensemble. J'ai à de ces ListViews représentant des données similaires, mais sur chargé aucun doit avoir un élément sélectionné.
J'ai remarqué que la sélection par défaut de l'indice de la valeur -1 dans la fenêtre propriétés pour le contrôle Listview. Je peux même mettre ce code sur le List_Loaded événement, mais la première SelectionChanged s'est déjà produit.
J'ai ajouté le PreviewMouseDown pour définir un indicateur que j'ai cliqué sur le listview dans l'événement SelectionChanged. Cette aide, mais je ne suis pas convaincu que c'est la meilleure solution.
Merci
Petrus
Je ne sais pas si vous avez encore besoin d'aide, mais j'ai résolu ce problème en faisant une variable qui suit la selectedindex, dans mon cas, lorsque l'origine liée, il est toujours à 0 donc c'est un peu plus facile pour moi de le faire, cependant, si vous informer le viewmodel de l'indice approprié, j'ai simplement ajouté un
Vous pouvez essayer de définir la propriété SelectedIndex à -1 dans votre contraignant, mais ce n'est pas non plus une solution élégante.
J'ai essayé de reproduire votre comportement, mais sans succès.
Quel est le Type de l'ItemsSource collection qui vous lie?
vous pouvez utiliser la fenêtre d'événement chargé de bloquer l'action