MyTetra Share
Делитесь знаниями!
Привязка ListBox к содержимому List<>
Время создания: 07.04.2020 23:11
Текстовые метки: ListBox, List, WPF, c#
Раздел: Компьютер - C# - WPF - XAML - ListBox
Запись: Kozlov-AE/Tetra/master/base/1565188313z0gf0yhweb/text.html на raw.githubusercontent.com

Привязка возможна только к свойствам, не к полям. Поэтому для начала вам нужно изменить класс "Исполнитель", введя поля:


C#Выделить код

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Artist
{
    private readonly string name;
    private readonly string path;
 
    public Artist(string name, string path)
    {
        this.name = name;
        this.path = path;
    }
 
    public string Name
    {
        get { return name; }
    }
 
    public string Path
    {
        get { return path; }
    } 
}

Затем нужно задать шаблон для отображения ListBoxItem'ов. По этому шаблону на каждый объект класса Artist будет автоматически создаваться ListBoxItem в виде TextBlock'a и его свойство Text будет привязано к Name:


XMLВыделить код

1
2
3
4
5
6
7
<ListBox Name="listBox">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Name}"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

И наконец нужно указать ListBox'у из какой коллекции брать данные. Причем если вы хотите чтобы он смог автоматически отслеживать добавление/удаление элементов из этой коллекции, то лучше использовать ObservableCollection:


C#Выделить код

1
2
3
4
5
6
7
8
var artists = new ObservableCollection<Artist>
{
    new Artist("aaa", "111"),
    new Artist("bbb", "222"),
    new Artist("ccc", "333")
};
 
listBox.ItemsSource = artists;
 
MyTetra Share v.0.59
Яндекс индекс цитирования