ListBox an List (Collection) in XAML binden

7

Ich lerne WPF, also bin ich irgendwie n00b. Ich habe ein paar Beispiele gesehen, wie ich machen kann, was ich tun möchte, aber nichts genau ...

Die Frage: Ich möchte List an ListBox binden. Ich möchte es in XAML tun, ohne Code in Code hinter. Wie kann ich das erreichen?

Im Moment mache ich es so :

XAML

%Vor%

Code hinter

%Vor%

Aber ich möchte FileList.ItemsSource = files; und FileList.Items.Refresh(); im C # -Code loswerden.

Danke

    
David 20.04.2010, 20:33
quelle

2 Antworten

18

Richten Sie zuerst die Bindung in Ihrer Listbox ein:

%Vor%

oder

%Vor%

Stellen Sie als Nächstes sicher, dass "Dateien" eine Eigenschaft in Ihrem DataContext (oder Code dahinter) ist. (Sie können nicht an Felder binden, nur Eigenschaften ...)

Im Idealfall möchten Sie die Dateien als ObservableCollection<T> anstelle von% festlegen. auch co_de%. Dadurch kann die Bindung Elemente richtig hinzufügen oder entfernen.

Wenn Sie diese beiden Dinge tun, sollte es einfach funktionieren.

    
Reed Copsey 20.04.2010, 20:36
quelle
2

Zwei Tricks, die zu Reeds Antwort hinzugefügt werden können:

1) Wenn in Ihren Listenfeldelementen nur eine Zeichenfolge angezeigt wird, können Sie das ListBox.ItemTemplate folderol vermeiden, indem Sie einfach ListBox.DisplayMemberPath festlegen.

2) Sie können das DataContext des Fensters auf sich selbst setzen. Geben Sie dem Fenster beispielsweise den Namen MyWindow und setzen Sie DataContext auf {Binding ElementName=MyWindow} . Jetzt können Sie eine Bindung an eine seiner öffentlichen Eigenschaften herstellen. (Ich bin mir ziemlich sicher, dass Reed derjenige ist, von dem ich zuerst gelernt habe.)

    
Robert Rossney 21.04.2010 07:52
quelle

Tags und Links