2011-01-10 23 views
0

Ich brauche etwas Hilfe bei der Implementierung eines Multi-Select auf einem ListBbox-Steuerelement. Im Moment kann ich die Informationen für eine Auswahl mit dem untenstehenden Code anzeigen, aber ich kann mir vorstellen, dass es möglich ist, e.added in meiner itemsSource zu verwenden, um Multiselect zu aktivieren. Würde mich über jede Hilfe freuen. Danke - BenListbox Multiselect mit e.added

private void contactsList_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) 
    { 
     //TODO: Add event handler implementation here. 
     ContactList selectedContact = contactsList.SelectedItem as ContactList; 


     tagsList.ItemsSource = new List<ContactList> { selectedContact };//?? 


    } 

Antwort

0

Ihre Frage ist schwer zu verstehen und zu vage, werde ich Dich einfach davon ausgehen, möchte diese tagsList.ItemsSource auf alle ausgewählten ContactLists setzen.

private void contactsList_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) 
    { 
     List<ContactList> list = new List<ContactList>(); 
     foreach (object contactList in contactsList.SelectedItems) 
     { 
      list.Add(contactList as ContactList); 
     } 

     tagsList.ItemsSource = list; 
    } 

Edit: Wenn Sie in der Tat nicht eingestellt ListBox.SelectionMode Sie sollten natürlich das zuerst tun.

+0

Danke, vielleicht war ich nicht sehr klar, wenn ich einfach den Auswahlmodus auf mehrere ändern, es zeigt immer noch nur die Informationen an, die mit der ersten Auswahl verbunden sind, und nicht die Informationen von allen ausgewählten Elementen. Sinn ergeben? – Ben

+0

Ich folge logischerweise so viel aus deinem Code, du hast dich ja nicht sehr deutlich ausgedrückt. –

+0

Sorry für den Mangel an Klarheit. So habe ich 2 Listenfelder contactsList und tagsList. In dem Moment, in dem ich auf ein Objekt in contactsList klicke, wird eine Information in tagsList angezeigt. Mein Problem war also, dass ich Elemente in contactsList multiselektieren und dann alle entsprechenden Informationen in tagsList anzeigen konnte. Danke nochmal – Ben

0

Multi-Auswahl capabilites in das Steuerelement List-Box gebaut ...

Haben Sie ListBox.SelectionMode eingestellt? http://msdn.microsoft.com/en-us/library/system.windows.controls.listbox.selectionmode.aspx

+0

Dank mit, ich sehe, was Sie jedoch bedeuten, wenn ich einfach den Auswahlmodus nur noch auf mehrere ändern, um die Informationen anzeigt, mit der ersten Auswahl zugeordnet, anstatt die Informationen von allen ausgewählten Artikeln. Sinn ergeben? – Ben

+0

Verwenden Sie die SelectedItems-Eigenschaft anstelle von SelectedItem –

0

Mehrfachauswahl in einem Listenfeld wird erreicht, indem die SelectionMode -Eigenschaft für die Listenfeldinstanz entweder auf Erweitert oder Mehrfach gesetzt wird (Extended bedeutet, dass Sie die UMSCHALTTASTE gedrückt halten müssen).

lstBox.SelectionMode = System.Windows.Controls.SelectionMode.Extended; 

Um die ausgewählten Elemente greifen Sie dann auf den Wert der EigenschaftlstBox.SelectedItems bekommen.

Im Beispiel Sie geben - Sie etwas ähnliches wie die folgenden tun könnten:

tagsList.ItemsSource = contactList.SelectedItems; 

this helps :)

+0

Ja danke das scheint Entschuldigung für die vage Frage – Ben

+0

Cool :) funktioniert, solange es funktioniert. Bitte bewerten Sie die Antwort, wenn es hilfreich war. Danke, – GaryT

0

versuchen Sie dies. es wird Elemente tagsList hinzufügen, wenn auf contactsList gemacht Auswahl e.AddedItems

private void contactsList_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    tagsList.Items.Add(((ListBoxItem)e.AddedItems[0]).Content.ToString()); 
}