Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!
Auswahlfelder werden unter WPF meist mit dem ComboBox-Steuerelement abgebildet. Manchmal braucht man diese nur für die Auswahl von Daten aus einfachen Auflistungen und die ComboBox-Steuerelemente selbst sind nicht an eine Eigenschaft des Code behind-Moduls gebunden. Wie man solche ungebundenen ComboBox-Steuerelemente einfach abbildet, zeigt dieser Artikel.
Wir schauen uns die ungebundene ComboBox für verschiedene Fälle an – als erstes für eine einfache Liste von Zeichenketten, danach für eine Liste mit Objekten einer bestimmten Klasse. Die Beispiele finden Sie jeweils in eigenen Fenstern, die vom Hauptfenster MainWindow aus aufgerufen werden.
String-Liste in ComboBox darstellen
Im Entwurf sieht unser erstes Beispiel (siehe Fenster ComboBoxMitEinfacherListe.xaml) wie in Bild 1 aus. Neben einigen Style-Definitionen für die Steuer-elemente im Bereich Window.Resources des XAML-Codes und der Definition des Grid-Elements, die Sie im Beispielprojekt einsehen können, werden das Bezeichnungsfeld und das ComboBox-Element wie folgt definiert:
Bild 1: Entwurf der ComboBox
<Label>Ungebundene ComboBox:</Label> <ComboBox Grid.Column="1" x:Name="cboUngebunden" ItemsSource="{Binding Vornamen}"></ComboBox>
Das Ziel ist nun, die Angabe des Attributs mit ItemsSource und dem Wert {Binding Vornamen} im Code behind-Modul so mit Leben zu füllen, dass die gewünschten Einträge in der ComboBox erscheinen.
Dazu deklarieren wir zunächst eine private Variable für die Liste und eine entsprechende Eigenschaft, welche die Liste für die daran gebundenen Steuer-elemente verfügbar macht:
Class MainWindow Private _Vornamen As List(Of String) Public Property Vornamen As List(Of String) Get Return _Vornamen End Get Set(value As List(Of String)) _Vornamen = value End Set End Property
Nun fügen wir die Konstruktor-Methode hinzu, die dafür sorgt, dass die Liste gefüllt wird und dass das XAML-Dokument das Code behind-Modul als Datenquelle verwenden kann (DataContext = Me). Danach füllen wir die Liste namens Vornamen noch mit drei Einträgen:
Public Sub New() InitializeComponent() DataContext = Me Vornamen = New List(Of String) With Vornamen .Add("André") .Add("Dieter") .Add("Klaus") End With End Sub End Class
Das Ergebnis sieht wie in Bild 2 aus. Das ist eine einfache Version für das Binden von Daten aus einer Liste als Datenquelle eines ComboBox-Steuerelements.
Bild 2: ComboBox-Steuerelement mit Einträgen