WPF Databinding

Poate cineva să mă îndrepte spre o resursă bună (sau aruncați-mi un indiciu) pentru a-mi arăta cum să fac DataBinding la controale (ComboBox, ListBox, etc.) în WPF? Sunt la un pic de pierdere atunci când toate meu WinForms niceities sunt luate de la mine, și eu nu sunt tot atât de strălucitoare pentru a începe cu ...

0
fr hi bn

6 răspunsuri

în spatele codului - setați DataContext din caseta dvs. de listă egală cu colecția pe care sunteți obligat.

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 poate declara proprietăți care se leaga folosind sintaxa „legare“.


0
adăugat

Și mai multe legături, doar în cazul în care cele de mai sus nu sunt suficiente:

Windows Presentation Foundation - Data Binding How-to Topics
- Approx 30 'How To' articles from MSDN.
"The topics in this section describe how to use data binding to bind elements to data from a variety of data sources in the form of common language runtime (CLR) objects and XML. "

Moving Toward wpf Data Binding One Step at a Time
- By wpf guru Josh Smith
"This article explains the absolute basics of wpf data binding. It shows four different ways how to perform the same simple task. Each iteration moves closer to the most compact, XAML-only implementation possible. This article is for people with no experience in wpf data binding."

0
adăugat

Iată o altă resursă bună de la MSDN: Prezentare generală a obligațiilor privind datele .

0
adăugat

Cea mai bună resursă pe care am găsit-o pentru legarea datelor wpf este blogul Bea Costa . Începeți de la prima postare și citiți-vă înainte. Este minunat.

0
adăugat

Găsesc videoclipurile tutorial la fel de minunat pentru Windows Client .Net . Dot Net Rocks TV a acoperit-o, de asemenea, cu ceva timp în urmă.

0
adăugat
aceste link-uri par a fi gibberish acum (link-ul clientului Windows .NET nu rezolvă nici măcar DNS-ul)
adăugat autor Ortund, sursa

Există trei lucruri pe care trebuie să le faceți:

  1. Legați ItemsSource din ComboBox la lista opțiunilor.
  2. Legați SelectedItem la proprietatea care deține selecția.
  3. Setați ComboBox.ItemTemplate la un DataTemplate pentru un ComboBoxItem.

De exemplu, dacă obiectul dvs. de date de date este o persoană care are adrese de e-mail și doriți să vă alegeți primar, este posibil să aveți clase cu aceste semnături:

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

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

Apoi, puteți crea o casetă combo astfel:


    
        
            
        
    

Acum trebuie să implementați INotifyPropertyChanged atât în ​​Persoană, cât și în Adresa de e-mail. Pentru colecția EmailAddresses, ați putea să o susțineți cu o ObjservableCollection.

Sau ca alternativă puteți utiliza Actualizați controalele .NET . Acesta este un proiect open source care înlocuiește legarea datelor și nu necesită INotifyPropertyChanged. Puteți folosi orice colecție are sens pentru a susține proprietatea EmailAddresses. XAML funcționează la fel ca mai sus, cu excepția faptului că importați spațiul de nume UpdateControls.XAML și înlocuiți {Binding ...} cu {u: Update ...}.

0
adăugat