Обновление ListView из объекта десериализации - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть приложение WPF, в которое я могу добавлять людей.Они появятся в виде списка.Каждый раз, когда я добавляю кого-то, они появляются.Однако, если я попытаюсь слишком загрузить файл, представление не будет обновлено.

Persons = new List<Person>();
UsersListView.ItemsSource = Persons;

View = (CollectionView)CollectionViewSource.GetDefaultView(UsersListView.ItemsSource);

if (File.Exists("Persons.bin"))
{
    Persons = (List<Person>) Utils.Deserialize("Persons.bin");
    // The Persons list gets populated however, it doesn't show up in my view. 
    View.Refresh(); 
}

private void AddPersonButton_Click(object sender, RoutedEventArgs e)
{
    if (ValidateInfo())
    {
        Person person = new Person(FirstNameTextBox.Text, LastNameTextBox.Text, Convert.ToInt32(AgeTextBox.Text));
        View.Refresh();
        Utils.Serialize(Persons, "Persons.bin");
    }
}

Когда я добавлю человека с помощью кнопки, его представление обновится, и они появятся, но когда я закрою и открою приложение, людине будет отображаться когда-либо, если мой список людей заполнен.

1 Ответ

0 голосов
/ 27 декабря 2018

Вам следует установить свойство ItemsSource для новой десериализованной коллекции:

if (File.Exists("Persons.bin"))
{
    Persons = (List<Person>) Utils.Deserialize("Persons.bin");
    UsersListView.ItemsSource = Persons;
}

Возможно, вы также захотите изучить привязку данных: https://docs.microsoft.com/en-us/dotnet/framework/wpf/data/data-binding-wpf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...