从反序列化对象更新ListView

时间:2018-12-27 15:58:22

标签: c# wpf

我有一个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 :(得分:1)

您应将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