2009-04-29 8 views
5

Duplizieren von:Differenz betwwen Datacontext und ItemSource in WPF

Why are DataContext and ItemsSource not redundant?


In WPF wir Liste der Artikel zu ComboBox auf 2 Arten

//CODE #1 
//WPF 
<ComboBox name="cmbItems" ItemSource={Binding} /> 

//C# 
cmbItems.DataContext = someList; 

eine andere Art und Weise zuordnen können, direkt zuordnen itemsource

//CODE #2 
//WPF 
<ComboBox name="cmbItems" ItemSource={Binding} /> 
//C# 
cmbItems. ItemSource = someList; 

beide dienen dem Zweck, aber was ist der Unterschied in oben genannten Schnipsel? und was ist gut zu benutzen?

+0

mögliches Duplikat von [Wer hat die beste Antwort dafür, warum DataContext und ItemsSource nicht redundant sind?] (Http://stackoverflow.com/questions/793340/who-has-the-best-answer-for-why- datacontext-and-itemssource-sind-nicht-redundant –

Antwort

9

Datacontext meist auf Formen verwendet wird, Kontrollen usw.

Ein ItemSource ist eine relative Pfaddatenbindung an diesem Datacontext zu tun.

Wenn Sie beispielsweise ein Formular zum Bearbeiten von Personendetails erstellen, wäre der DataContext Person, und die verschiedenen Steuerelemente im Formular binden jeweils an eine separate Eigenschaft für dieses Objekt, z. B. Name, Geburtsdatum usw.

2

Im zweiten Beispiel können Sie die ItemsSource = {Binding} weglassen. Sie setzen die ItemsSource direkt auf einen Wert in Ihrem Code hinter .. Sie benötigen hier keine Bindung. In Ihrem ersten Beispiel setzen Sie die Datacontext, und eine Bindung verwenden sie von der Datacontext wieder abzurufen ..

Aber es ist nicht wirklich wichtig .. für beide Methoden gut funktionieren ...

Ich benutze Der folgende Daumen der Regel: setze es in Code hinter, wenn ich die Sammlung verfügbar habe .. Setze es in eine Art Bindungsmodus, wenn ich die Sammlung transformieren muss, damit ich einen IValueConverter verwenden kann, um den Job zu machen.

Verwandte Themen