我有一个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/