Question

Quelqu'un peut-il m'indiquer une bonne ressource (ou me donner un indice) pour me montrer comment effectuer du DataBinding sur des contrôles (ComboBox, ListBox, etc.) dans WPF ?Je suis un peu perdu lorsque toutes mes subtilités WinForms me sont retirées, et je ne suis pas si brillant au départ...

Était-ce utile?

La solution

Je trouve les vidéos tutorielles sur Client Windows .Net tout aussi génial. Dot Net fait vibrer la télévision en a également parlé il y a quelque temps.

Autres conseils

La meilleure ressource que j'ai trouvée pour la liaison de données WPF est Le blog de Béa Costa.Commencez par le premier message et lisez la suite.C'est génial.

dans le code derrière - définissez le DataContext de votre zone de liste égal à la collection à laquelle vous vous liez.

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;
}

En XAML, Listbox peut déclarer les propriétés auxquelles elle se lie à l'aide de la syntaxe « Binding ».

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

Et quelques liens supplémentaires, juste au cas où ce qui précède ne suffirait pas :

Windows Présentation Foundation - Rubriques pratiques sur la liaison de données
- Environ 30 articles « Comment faire » de MSDN.
"Les rubriques de cette section décrivent comment utiliser la liaison de données pour lier des éléments à des données provenant de diverses sources de données sous la forme d'objets Common Language Runtime (CLR) et de XML."

Vers la liaison de données WPF, une étape à la fois
- Par le gourou WPF Josh Smith
"Cet article explique les bases absolues de la liaison de données WPF.Il montre quatre manières différentes d’effectuer la même tâche simple.Chaque itération se rapproche de l’implémentation la plus compacte possible, uniquement XAML.Cet article s'adresse aux personnes n'ayant aucune expérience en matière de liaison de données WPF."

Voici une autre bonne ressource de MSDN : Présentation de la liaison de données.

Il y a trois choses que vous devez faire :

  1. Liez le ItemsSource du ComboBox à la liste des options.
  2. Liez le SelectedItem à la propriété qui contient la sélection.
  3. Définissez ComboBox.ItemTemplate sur un DataTemplate pour un ComboBoxItem.

Ainsi, par exemple, si votre objet de contexte de données est une personne possédant une adresse e-mail et que vous souhaitez choisir sa principale adresse, vous pourriez avoir des classes avec ces signatures :

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

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

Ensuite, vous pouvez créer la liste déroulante comme ceci :

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

Vous devez maintenant implémenter INotifyPropertyChanged dans Person et EmailAddress.Pour la collection EmailAddresses, vous pouvez la sauvegarder avec une ObjservableCollection.

Ou comme alternative, vous pouvez utiliser Mettre à jour les contrôles .NET.Il s'agit d'un projet open source qui remplace la liaison de données et ne nécessite pas INotifyPropertyChanged.Vous pouvez utiliser n’importe quelle collection logique pour sauvegarder la propriété EmailAddresses.Le XAML fonctionne de la même manière que ci-dessus, sauf que vous importez l'espace de noms UpdateControls.XAML et remplacez {Binding ...} par {u:Update ...}.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top