ObseservableCollection неправильно заполняется с помощью foreach (C#) - PullRequest
1 голос
/ 15 января 2020

Я использую массив и foreach, чтобы заполнить список. Но WPF GUI показывает мне только последний элемент из массива, а не все. Привязка правильная, в моем коде должна быть логическая ошибка:

public ObservableCollection<Client> Clients { get; set; }

string[] clients = { 
            "XYZ.company.server",
            "ABC.company.server"
}

foreach (string item in clients)
{
    Client client = new Client(item);
    Clients = new ObservableCollection<Client>();
    Clients.Add(client);
}

this.DataContext = this;

* Gui показывает только "AB C .company.server" в ListView.

1 Ответ

4 голосов
/ 15 января 2020

Вы должны объявить коллекцию до l oop. Поэтому при зацикливании вашей коллекции будут добавляться элементы из foreach l oop.

Clients = new ObservableCollection<Client>();
foreach (string item in clients)
{
    Client client = new Client(item);

    Clients.Add(client);

}

В противном случае ваша коллекция будет воссоздана каждый раз в l oop, и все предыдущие итерированные элементы не будут добавлены во вновь созданную коллекцию.

...