Bindung ListBox-Liste (Collection) in XAML
Ich bin zu lernen, WPF, so bin ich ein bisschen n00b in diesem.
Ich sah einige Beispiele darüber, wie das zu tun, was ich tun will, aber nichts genau...
Frage: ich binden wollen, die Liste ListBox. Ich will es tun, in XAML, w/o-Codierung im code-behind. Wie kann ich das erreichen?
Recht, jetzt weiß ich es so:
XAML
<ListBox x:Name="FileList">
<ListBox.ItemTemplate>
<DataTemplate>
<Label Content="{Binding Path=.}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Code hinter
public MainWindow()
{
//...
files = new List<string>();
FileList.ItemsSource = files;
}
private void FolderBrowser_TextChanged(object sender, RoutedEventArgs e)
{
string folder = FolderBrowser.Text;
files.Clear();
files.AddRange(Directory.GetFiles(folder, "*.txt", SearchOption.AllDirectories));
FileList.Items.Refresh();
}
Aber ich möchte, um loszuwerden FileList.ItemsSource = files;
und FileList.Items.Refresh();
im C# - code.
Dank
- dieser thread kann dir helfen. stackoverflow.com/questions/9391746/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erste, den setup der Bindung in listbox:
oder
Nächste, stellen Sie sicher, dass unter "Dateien" ist ein Eigenschaft in DataContext (oder code-behind). (Sie können nicht binden und Feldern, nur Eigenschaften...)
Im Idealfall werden Sie wollen, um Dateien, die ein
ObservableCollection<T>
statt einerList<T>
sowie. Damit wird die Bindung zu handhaben hinzufügen oder entfernen von Elementen richtig.Wenn Sie diese zwei Dinge, es sollte nur richtig funktionieren.
ObservableLis<T> : INotifyCollectionChanged, INotifyPropertyChanged
Zwei tricks hinzufügen Reed ' s Antwort:
1) Falls Sie die Anzeige in dem Listenfeld items ist ein string, Sie können vermeiden, die
ListBox.ItemTemplate
folderol, indem Sie nur die EinstellungListBox.DisplayMemberPath
.2) Sie können die Fenster
DataContext
zu sich selbst. Zum Beispiel, geben Sie dem Fenster einen NamenMyWindow
und seineDataContext
zu{Binding ElementName=MyWindow}
. Jetzt können Sie binden, um eine Ihrer öffentlichen Eigenschaften. (Ich bin mir ziemlich sicher, dass Reed ' s, die ich gelernt, dass der trick von in den ersten Platz.)