Frage

Kann mich jemand auf eine gute Ressource verweisen (oder mir einen Hinweis geben), die mir zeigt, wie ich DataBinding für Steuerelemente (ComboBox, ListBox usw.) in WPF durchführe?Ich bin ein bisschen ratlos, wenn mir alle WinForms-Feinheiten genommen werden, und ich bin von Anfang an nicht besonders klug ...

War es hilfreich?

Lösung

Die Tutorial-Videos finde ich unter Windows-Client .Net ebenso großartig. Dot Net rockt TV habe es vor einiger Zeit auch behandelt.

Andere Tipps

Die beste Ressource, die ich für die WPF-Datenbindung gefunden habe, ist Bea Costas Blog.Beginnen Sie mit dem ersten Beitrag und lesen Sie weiter.Es ist toll.

im Code dahinter – setzen Sie den DataContext Ihres Listenfelds auf den Wert der Sammlung, an die Sie binden.

private void OnInit(object sender, EventArgs e)
{
  //myDataSet is some IEnumerable 

  // myListBox is a ListBox control.
  // Set the DataContext of the ListBox to myDataSet
  myListBox.DataContext = myDataSet;
}

In XAML kann Listbox mithilfe der „Binding“-Syntax deklarieren, an welche Eigenschaften es bindet.

<ListBox Name="myListBox" Height="200"
  ItemsSource="{Binding Path=BookTable}"
  ItemTemplate  ="{StaticResource BookItemTemplate}"/>

Und noch ein paar Links, für den Fall, dass das Obige nicht ausreicht:

Windows Presentation Foundation – Anleitungsthemen zur Datenbindung
- Ungefähr 30 „How To“-Artikel von MSDN.
„Die Themen in diesem Abschnitt beschreiben, wie Sie mithilfe der Datenbindung Elemente an Daten aus verschiedenen Datenquellen in Form von CLR-Objekten (Common Language Runtime) und XML binden."

Schritt für Schritt zur WPF-Datenbindung übergehen
– Von WPF-Guru Josh Smith
„In diesem Artikel werden die absoluten Grundlagen der WPF-Datenbindung erläutert.Es zeigt vier verschiedene Möglichkeiten, die gleiche einfache Aufgabe auszuführen.Jede Iteration rückt näher an die kompakteste reine XAML-Implementierung heran, die möglich ist.Dieser Artikel richtet sich an Personen ohne Erfahrung mit der WPF-Datenbindung.

Hier ist eine weitere gute Ressource von MSDN: Übersicht über die Datenbindung.

Es gibt drei Dinge, die Sie tun müssen:

  1. Binden Sie die ItemsSource der ComboBox an die Liste der Optionen.
  2. Binden Sie das SelectedItem an die Eigenschaft, die die Auswahl enthält.
  3. Legen Sie ComboBox.ItemTemplate auf ein DataTemplate für ein ComboBoxItem fest.

Wenn Ihr Datenkontextobjekt beispielsweise eine Person mit E-Mail-Adressen ist und Sie deren primäre Adresse auswählen möchten, verfügen Sie möglicherweise über Klassen mit diesen Signaturen:

public class EmailAddress
{
    public string AddressAsString { get; set; }
}

public class Person
{
    public IEnumerable<EmailAddress> EmailAddresses { get; }
    public EmailAddress MainEmailAddress { get; set; }
}

Dann könnten Sie das Kombinationsfeld wie folgt erstellen:

<ComboBox ItemsSource="{Binding EmailAddresses}" SelectedItem="{Binding MainEmailAddress}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <ComboBoxItem Content="{Binding AddressAsString}"/>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

Jetzt müssen Sie INotifyPropertyChanged sowohl in Person als auch in EmailAddress implementieren.Für die EmailAddresses-Sammlung könnten Sie sie mit einer ObjservableCollection unterstützen.

Oder als Alternative können Sie verwenden Update steuert .NET.Dies ist ein Open-Source-Projekt, das die Datenbindung ersetzt und kein INotifyPropertyChanged erfordert.Sie können jede sinnvolle Sammlung verwenden, um die EmailAddresses-Eigenschaft zu unterstützen.Das XAML funktioniert genauso wie oben, außer dass Sie den UpdateControls.XAML-Namespace importieren und {Binding ...} durch {u:Update ...} ersetzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top