我正在尝试反序列化 json 文件,然后使用生成的可观察集合来获取 Datagrid 控件。到这里一切都好。
当我尝试更新集合时,数据网格在滚动之前不会更新。我不知道为什么,我理解可观察的集合 Datagrid 应该自动更新。
这是我的代码:
MainWindow.xaml.cs:
public ObservableCollection<Item> Chapters { get; set; } = new();
public class Item
{
public int id { get; set; }
public string date { get; set; }
public string title { get; set; }
public string description { get; set; }
public string URL { get; set; }
}
public class Root
{
public List<Item> items { get; set; }
}
反序列化json文件并将其转换为observableCollection:
var text = File.ReadAllText(@"C:\Users\Carlos\Desktop\test.json");
Chapters = new ObservableCollection<Item>(JsonConvert.DeserializeObject<Root>(text).items.ToList());
我尝试更新集合,但 Datagrid 只是在滚动时更新:
private void btnCadena_Click(object sender, RoutedEventArgs e)
{
Chapters[2].title = "test";
}
MainWindow.xaml:
<controls:DataGrid x:Name="DgChapters"vItemsSource="{x:Bind Chapters}"/>
提前致谢
ObservableCollection
通知集合中的更改,而不是每个项目内部的更改。
我会使用 CommunityToolkit.Mvvm NuGet 包来通知每个项目内的更改。
// The class needs to be partial for the CommunityToolkit.Mvvm.
public partial class Item : ObservableObject
{
[ObservableProperty]
// The CommunityToolkit.Mvvm will automatically generate an UI-interactive
// "ID" property for you.
private int id;
[ObservableProperty]
// Same here. A "Title" property will be auto-generated.
private string title = string.Empty;
}