Wie setzen ItemsSource?
Dieser dialog macht für mich keinen Sinn
http://img576.imageshack.us/img576/4223/50709706.gif
Und ich habe Schwierigkeiten, die Suche nach guten tutorials auf Sie. Die meisten Beispiele sind nicht detailliert genug, oder Dinge zu tun die über den code, aber ich möchte, um die Vorteile der IDE wie viel wie möglich.
Was ist der Unterschied zwischen ItemsSource
und DataContext
?
Ich würde gerne die Bindung an nur eine Liste für den Anfang. Ich brauche nicht SQL oder Datenbanken oder etwas Phantasie. Wo würde ich erklären, meine Liste? In MainWindow.xaml.cs
? Wie bekomme ich es angezeigt, in diesem dialog?
- Als ein beiseite, ich empfehle sich die Zeit nehmen, sich bequem mit XAML. Es gibt noch viele Dinge, die schwierig oder unmöglich zu tun, aus der visual designer. XAML ist mehr als nur ein Weg, zu sagen, wo der text Boxen und buttons gehen sollte; es ist eine reiche, mächtige Sprache zur Beschreibung von Objekten und deren Beziehungen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Denken "DataContext" als default-Wert für "Source" in eine Bindung.
Wenn Sie eine Bindung haben, können Sie den Pfad angeben, und die Quelle, wie diese (ich verwende TextBox als ein Beispiel):
Also meine TextBox.Text-Eigenschaft gebunden ist, ein Foo-Eigenschaft auf ein Objekt namens " Bar " (eine Ressource, die irgendwo in der Anwendung).
Allerdings, wenn Sie haben eine ganze Reihe von Dingen, die Sie binden möchten, um die Eigenschaften der auf-Bar, es ' s einfacher zu set Bar als DataContext des übergeordneten Containers. Eine Bindung ohne eine Quelle wird nur den DataContext standardmäßig, und die DataContext-fließt durch, um die untergeordneten Steuerelemente aus der übergeordneten. Also:
Alle Textfelder sind immer noch die Bindung an Eigenschaften auf-Bar, aber Sie tun es, ohne es als Quelle ausdrücklich zu.
Lassen Sie uns also einen Blick auf das Dialogfeld, das Sie gebucht. Es gibt mehrere Optionen für die "Quelle" der ItemsSource-Bindung. Wenn Sie die Option "DataContext", sagen Sie Visual Studio, dass das ItemsControl braucht nicht zu wissen, die Quelle - Sie werden es abholen aus dem DataContext des übergeordneten Containers (vielleicht sogar für das Fenster selbst).
Wenn Sie wählen Sie eine der anderen Optionen (ElementName, RelativeSource oder StaticResource -) dann wäre die Einstellung der Bindung Quelle explizit für das ItemsControl.
Einmal haben Sie gesagt, dass es die Bindung an den DataContext, müssen Sie drop in den Abschnitt "Pfad" des dialogs und sagen, die Eigenschaft zu binden, die Elemente der Steuerung zu. Am Ende der markup-Code würde in etwa so Aussehen (vorausgesetzt, es ist eine ListBox):
Also die Elemente im Listenfeld kommen aus einer Eigenschaft namens "Foos", und diese Eigenschaft auf ein Objekt, das in der DataContext irgendwo höher in der logischen Struktur (vielleicht auf das Fenster selbst).
DataContext
als Quelle, dann die dropdown-ListeSource
gibt es keine Optionen. Ich sehe nur "None". Speziell, wo in meinem C# - code soll ich etwas wieList<MyClass> items
so, dass er erscheint in der ItemsSource-dialog?Sie nur selten benötigen, um die Daten in Zusammenhang mit einer Kontrolle außerhalb der Kontrolle. Der häufigste Anwendungsfall für die Einstellung
DataContext
(DataContext = this;
) ist innerhalbUserControl
's code-behind zu machen, alle Steuerelemente innerhalb derUserControl
zu binden, um die Eigenschaften des Steuerelements.Wenn Sie ein
ListBox
EinstellungItemsSource
ist ausreichend, es sei denn, Sie tun etwas funky.Dies ist eine ziemlich gute Komplettlösung: http://windowsclient.net/learn/video.aspx?v=315275
Konkret, Sie müssen die
DataContext
zuerst erzählen, wo Sie zu suchenItemsSource
. Der einfachste Weg ist, legen Sie diese auf das Fenster, durch das XAML: