我有一个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");
    }
}


当我通过按钮添加一个人时,他们的视图将刷新并显示,但是当我关闭并打开该应用程序时,如果填充了我的人列表,则这些人将不会显示。

最佳答案

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

关于c# - 从反序列化对象更新ListView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53947687/

10-13 06:47