2009-01-11 7 views

Répondre

0

Je suis assez sûr que vous pouvez jeter tout ce que vous voulez dans la zone de liste. Vous pouvez donc créer votre propre contrôle avec une étiquette et deux boutons pour les flèches. Puis jetez-le dans le ListBox et joignez les événements.

3

Je voudrais faire un bouton qui est un bouton, et dans son cas OnClick, faire quelque chose comme:

int location = listItems.SelectedIndex; 
if (location > 0) 
{ 
    object rememberMe = listItems.SelectedItem; 
    listItems.Items.RemoveAt(location); 
    listItems.Items.Insert(location - 1, rememberMe); 
    listItems.SelectedIndex = location - 1; 
} 

Gardez à l'esprit que ce n'est pas testé car je n'ai pas visual studio droit ouvert maintenant, mais cela devrait vous donner une bonne idée.

1

J'inclurais la commande de l'article dans le modèle (c'est-à-dire votre classe de données). Ensuite, je lie le ListBox à un CollectionView qui est trié par cette valeur. Vos boutons haut/bas échangeraient simplement la valeur de cette propriété de tri dans deux de vos éléments de données.

0

Le reliez-vous? Essayez de modifier l'ordre de l'objet de l'objet de liaison et de mettre à jour la liste.

3

Utilisez un ObservableCollection comme une collection pour votre ListBox

ObservableCollection a une méthode astucieuse Move qui tire toute la belle bonté des événements pour votre listbox répondre ...

1

Move Up

int index = listbox.SelectedIndex; 
if (index != -1) 
{ 
    if (index > 0) 
    { 
     ListBoxItem lbi = (ListBoxItem)listbox.Items[index]; 
     listbox.Items.RemoveAt(index); 
     index--; 
     listbox.Items.Insert(index, lbi); 
     listbox.SelectedIndex = index; 
     listbox.ScrollIntoView(lbi); 
    } 
} 

Déplacer vers le bas

int index = listbox.SelectedIndex; 
if (index != -1) 
{ 
    if (index < listbox.Items.Count - 1) 
    { 
     listboxlbi = (ListBoxItem)listbox.Items[index]; 
     listbox.Items.RemoveAt(index); 
     index++; 
     listbox.Items.Insert(index, lbi); 
     listbox.SelectedIndex = index; 
     listbox.ScrollIntoView(lbi); 
    } 
} 
0

Si vous liez il:

private void MoveItemUp() 
    { 
     if (SelectedGroupField != null) 
     { 
      List<string> tempList = AvailableGroupField; 
      string selectedItem = SelectedGroupField; 

      int currentIndex = tempList.IndexOf(selectedItem); 

      if (currentIndex > 0) 
      { 
       tempList.Remove(selectedItem); 
       tempList.Insert(currentIndex - 1, selectedItem); 
       AvailableGroupField = null; 
       AvailableGroupField = tempList; 
       SelectedGroupField = AvailableGroupField.Single(p => p == selectedItem); 
      } 
     } 
    } 

    private void MoveItemDown() 
    { 
     if (SelectedGroupField != null) 
     { 
      List<string> tempList = AvailableGroupField; 
      string selectedItem = SelectedGroupField; 

      int currentIndex = tempList.IndexOf(selectedItem); 

      if (currentIndex < (tempList.Count - 1)) 
      { 
       tempList.Remove(selectedItem); 
       tempList.Insert(currentIndex + 1, selectedItem); 
       AvailableGroupField = null; 
       AvailableGroupField = tempList; 
       SelectedGroupField = AvailableGroupField.Single(p => p == selectedItem); 
      } 
     }   
    } 

Je n'ai pas expliqué comment lier la commande à une méthode que vous auriez en supposant déjà compris cela.

Questions connexes