对于Avalonia DataGrid,我有一个非常奇怪的问题,基本上尽管行数是常量的(在我的例子中是200行),它实际上只显示小于200,而且计数是随机的。每次加载数据时,显示的行最多可达170行,但有时可在120处停止,等等。
我可以从后端访问所有200行,但如上所述,DataGrid显示的数据总是低于实际计数。
<DataGrid Name="DataGridResults" Items="{Binding Records}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding ID}"/>
<DataGridTextColumn Header="Path" Binding="{Binding File}"/>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
</DataGrid.Columns>
</DataGrid>
public void OnClickCommand()
{
Records = new ObservableCollection<Record>(r.GetData(Path).ToList());
Count = Records.Count;
}
值得补充的是,数据实际上已经存在,但是滚动条不允许进一步滚动。我可以在垂直监视器上看到更多的东西,但是买这么长时间的显示器去看所有的东西都是有问题的。
发布于 2022-11-26 15:25:32
我敢打赌,Records
属性的设置者不需要引发PropertyChanged通知。当您更改整个集合时,它需要提高PC,而不是添加/删除项。为了解决这个问题,引发了PropertyChanged:
public event PropertyChangedEventHandler PropertyChanged;
private ObservableCollection<Record> _records;
public ObservableCollection<Record> Records
{
get => _records;
set
{
if (_records != value)
{
_records = value;
// if you have a base Viewmodel class, call your custom impl for raising PropertyChanged
PropertyChanged?.Invoke (this, new PropertyChangedEventArgs(nameof(Records)));
}
}
}
https://stackoverflow.com/questions/74582857
复制相似问题