Vra

Kan iemand my verwys na 'n goeie hulpbron (of gooi my 'n idee) om my te wys hoe om DataBinding te beheer (ComboBox, ListBox, ens) in WPF doen? Ek is 'n bietjie van 'n verlies wanneer al my Winforms niceities weg van my geneem, en ek is nie al wat helder te begin met ...

Was dit nuttig?

Oplossing

Ek vind die handleiding video's by Windows Client Net ewe awesome. Dot Net Rocks TV het ook gedek dit 'n geruime tyd gelede.

Ander wenke

Die beste bron Ek het gevind vir WPF data bindend is Bea Costa se blog . Begin van die eerste post en lees verder. Dit is awesome.

in kode agter -. Stel die DataContext van list box jou gelyk aan die versameling wat jy binding aan

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, Listbox kan verklaar wat eienskappe dit bind aan die gebruik van die "Bind" sintaksis.

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

En 'n paar meer links, net in geval die bogenoemde nie genoeg:

Windows Presentation Foundation - Data Binding How-to Onderwerpe < br> - Ongeveer 30 "Hoe Om 'artikels van MSDN
. "Die onderwerpe in hierdie afdeling beskryf hoe om data te gebruik binding aan elemente om data bind uit 'n verskeidenheid van data bronne in die vorm van gemeenskaplike taal runtime (CLR) voorwerpe en XML."

beweeg na WPF Data Binding One Step by 'n Time
- Deur WPF guru Josh Smith
"In hierdie artikel verduidelik die absolute basiese beginsels van WPF data bindend. Dit wys vier verskillende maniere hoe om dieselfde eenvoudige taak uit te voer. Elke iterasie beweeg nader aan die mees kompakte, XAML-net implementering moontlik te maak. Hierdie artikel is vir mense met geen ondervinding in WPF data bindend. "

Hier is nog 'n goeie hulpbron van MSDN: Data Binding Oorsig .

Daar is drie dinge wat jy hoef te doen:

  1. Bind die ItemsSource van die ComboBox die lys van opsies.
  2. Bind die SelectedItem om die eiendom wat die keuse het.
  3. Stel die ComboBox.ItemTemplate 'n DataTemplate vir 'n ComboBoxItem.

So, byvoorbeeld, as jou data konteks voorwerp is 'n persoon wat e-pos adresse, en jy wil hulle primêre kies, jy kan klasse het met hierdie handtekeninge:

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

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

Dan kan jy die combo box soos hierdie te skep:

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

Nou moet jy implementeer INotifyPropertyChanged in beide Persoon en EmailAddress. Vir die versameling emailadressen, kan jy dit terug met 'n ObjservableCollection.

Of as 'n alternatief wat jy kan gebruik Update Beheer NET . Dit is 'n oop bron projek wat vervang data bindend en vereis nie INotifyPropertyChanged. Jy kan gebruik wat ook al versameling sinvol om terug die eiendom emailadressen. Die XAML werk dieselfde as hierbo, behalwe dat jy die UpdateControls.XAML naamruimte in te voer en te vervang {Binding ...} met {u: Update ...}.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top