comment sélectionner des éléments dans la zone de liste, si commencez à faire glisser d'un élément à la fin du glissement?Faites glisser et sélectionnez Articles ListBox?
Répondre
J'ai trouvé cette approche sur une question sur msdn mais je ne la retrouve plus alors je ne peux pas la lier .. Quoiqu'il en soit, cela marche plutôt bien, seul problème étant de faire glisser et de faire défiler en même temps, il peut manquer quelques éléments. J'ai créé une bibliothèque de contrôle personnalisée appelée MultiSelectLibrary que vous pouvez utiliser comme cette
Ajouter une référence à MultiSelectLibrary qui peut être téléchargé à partir here (source here)
Ajouter l'espace de noms et la MultiSelectListBox avec SelectionMode = « Avancé » et ça devrait marcher.
xmlns:mslb="clr-namespace:MultiSelectLibrary.MultiSelectListBox;assembly=MultiSelectLibrary"
<mslb:MultiSelectListBox SelectionMode="Extended" .../>
Si vous plutôt que d'utiliser un code derrière vous pouvez le faire comme ça (faire la même chose que la bibliothèque)
<ListBox SelectionMode="Extended"
...>
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<EventSetter Event="PreviewMouseUp" Handler="ListBoxItem_PreviewMouseUp"/>
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListBoxItem_PreviewMouseLeftButtonDown"/>
<EventSetter Event="PreviewMouseMove" Handler="ListBoxItem_PreviewMouseMove"/>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
Et dans le code derrière
private object _anchor, _lead;
private Boolean _inMouseSelectionMode;
private List<object> _selectedItems = new List<object>();
private void ListBoxItem_PreviewMouseUp(object sender, MouseButtonEventArgs e)
{
_selectedItems.Clear();
_inMouseSelectionMode = false;
_anchor = null;
_lead = null;
}
private void ListBoxItem_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
return;
_anchor = sender;
_inMouseSelectionMode = true;
_selectedItems.Clear();
_selectedItems.Add(sender);
}
private void ListBoxItem_PreviewMouseMove(object sender, MouseEventArgs e)
{
if (!_inMouseSelectionMode)
return;
if (_lead != sender)
{
var last = _lead;
_lead = sender;
if (_selectedItems.Contains(_lead))
_selectedItems.Remove(last);
else
_selectedItems.Add(_lead);
}
foreach (var item in _selectedItems)
((ListBoxItem)item).IsSelected = true;
}
Merci pour le partage, Meleak, va plonger dans le code que je veux quelque chose de semblable. –
Comment puis-je dessiner un cadre sur ce que je sélectionne? – Shimmy
lien vers la source ne fonctionne pas :( –
- 1. WPF: cliquez ListBox et faites glisser sélectionne d'autres articles
- 2. Dojo: faites glisser et déposez Arrêter Faites glisser
- 3. Javascript Faites glisser et déposez
- 4. ipad faites glisser et déposez
- 5. WPF - Faites glisser à partir de DataTemplate
- 6. listbox et javascript pour ajouter des articles
- 7. objet Faites glisser verticalement
- 8. Touchez et faites glisser l'image dans android
- 9. C# Faites glisser et déposez la fonctionnalité
- 10. Faites glisser et déposez dans ASP.NET
- 11. faites glisser et déposer les widgets
- 12. Faites glisser et déposez sur Flex AdvancedDataGrid
- 13. Faites glisser et zoomez avec googlemap
- 14. faites glisser et déposez dans un dialogue
- 15. Faites glisser et déposez sur Desktop/Explorer
- 16. Faites glisser et déposez l'intérieur d'un modalPanel
- 17. Faites glisser et déposer dans WPF C#
- 18. Faites glisser et déposer dans winapi
- 19. Faites glisser et déposer dans Silisteur Spark
- 20. station articles capables de listbox dans vb.net
- 21. sélectionnez plusieurs articles avec JS
- 22. Faites glisser et déposez et les événements de la souris
- 23. WPF Listbox défilement automatique tout en faisant glisser
- 24. WPF ListBox - Faites défiler toujours au-dessus
- 25. Silverlight 2.0 RC Glisser-déposer d'un ListBox
- 26. Faites glisser et déposez l'image dans un formulaire Web
- 27. Silverlight Faites glisser et déposez pour n'importe quel UIElement?
- 28. Faites glisser et déposez le fichier dans Silverlight 4?
- 29. Faites glisser et déposez le bouton Windows Forms
- 30. Cocoa: Faites glisser et déposez n'importe quel type de fichier
Ce n » t travailler pour vous par défaut? –
Vous voulez dire 'Box Selection' dans' Windows Explorer'? – decyclone
simplement (disons) si je fais glisser de l'élément 5 à 10, je veux marquer ces éléments comme sélectionnés? –