2016-05-08 6 views
2

Ich habe Flags Enum Wert, den ich in die Elementquelle der Listbox gebunden habe. Ich habe SelectionMode als mehrfach verwendet. Ich möchte alle ausgewählten Elemente der Listbox einer Flag Enum-Eigenschaft zuweisen. Wie kann ich die ausgewählten Objekte binden?So binden Sie die mehreren ausgewählten Elemente des Listenfelds in XAML

private void ListBox_SelectionChanged(object sender,SelectionChangedEventArgs e) 
{ 
    ListBox list = sender as ListBox; 

    this.Weekdays=list.SelectedItems.GetType().GetEnumValues().GetEnumerator()  
                as Weekdays; 

} 

Hier Wochentage ist Flaggen-Enum vom Typ Weekdays.I alle ausgewählten Elemente der Listbox Wochentage binden möchten.

+0

Sie möchten sie aus einer Eigenschaft binden oder wollen sie nur in Ihrem Eventhandler? –

+0

@Kylo Ren, Ich möchte die ausgewählten Elemente an eine Eigenschaft des Typs Flag-Enum binden. –

+0

dann müssen Sie Ihre eigene benutzerdefinierte Klasse von ListBox erstellen –

Antwort

1

Der folgende Code ist alles was Sie brauchen! list.SelectedItems enthält alle ausgewählten Elemente, wenn der Mehrfachauswahlmodus ausgewählt ist. Sie können sie während der Auswahl ändern Ereignis der Liste verfolgen. Sie können die Werte nicht einer Aufzählung zuweisen, sondern eine Liste erstellen und diese Liste zum Speichern der ausgewählten Elemente verwenden, die dieselbe Datenklasse wie die Listenquelle verwenden.

private List<DataClass> SelectedItemsList = new List<DataClass>(); 

if (list.SelectedItems.Count >= 0) 
{ 
    for (int i = 0; i < list.SelectedItems.Count; i++) 
    { 
     SelectedItemsList.Add(list.SelectedIndices[i]); 
    } 
} 
Verwandte Themen