2010-10-19 4 views
0

J'ai participé à l'événement double-clic de ListBoxItems en utilisant le ff. code dans mon XAML:Sélection de tous les ListBoxItems en double-cliquant sur

<Style TargetType="{x:Type ListBoxItem}"> 
     <EventSetter Event="MouseDoubleClick" Handler="onMouseDoubleClickOnListBoxItem" /> 
    </Style> 

Le code du gestionnaire est:

private void onMouseDoubleClickOnListBoxItem(object sender, MouseButtonEventArgs e) 
    { 
     Debug.Print("Going to select all."); 
     listBox.SelectAll(); 
     Debug.Print("Selected all."); 
    } 

Quand je lance, je vois la sortie de débogage, mais les éléments ne sont pas tous être sélectionné sur l'écran.

Répondre

1

Essayez avec SelectionMode comme multiple.

Mise à jour,

En mode étendu l'élément sur lequel un double clic est effectué il remis à zéro SelectedItem, cela est dû sur le même thread l'action d'événement de clic de sélection seul élément est effectué. Pour ce faire, j'ai utilisé le gestionnaire d'événements double-clic que j'appelle (commencez par invoquer - c'est asynchrone) une méthode déléguée (dans la portée de la classe) et j'appelle l'appel SelectAll pour la liste dans la fenêtre principale. .

Comme,

// delegate 
delegate void ChangeViewStateDelegate(); 

// on double click event invoke the custom method 
private void onMouseDoubleClickOnListBoxItem (object sender, MouseButtonEventArgs e) { 
    ChangeViewStateDelegate handler = new ChangeViewStateDelegate (Update); 
    handler.BeginInvoke (null, null); 
} 

// in the custom method invoke the selectall function on the main window (UI which created the listbox) thread 
private void Update() { 
    ChangeViewStateDelegate handler = new ChangeViewStateDelegate (UIUpdate); 
    this.Dispatcher.BeginInvoke (handler, null); 
} 

// call listbox.SelectAll 
private void UIUpdate() { 
    lstBox.SelectAll(); 
} 
+0

SelectionMode est déjà étendue. –

+0

Oui mais je pense qu'en mode Étendu l'item sur lequel on double-clique est réinitialisé comme sélectionné. Je ne suis pas sûr à ce sujet n'ont pas une configuration à vérifier. – whoisthis

+0

Désolé, vous avez raison. Multiple car le mode de sélection produit un meilleur comportement. Il y a toujours un élément non sélectionné, cependant: l'élément sur lequel j'ai double-cliqué. En outre, j'ai besoin d'utiliser le mode de sélection étendue. Si vous modifiez votre réponse avec la solution à la fois, je peux annuler le vote à la baisse et accepter votre réponse. –

Questions connexes