Blazor虚拟化组件不在滚动上呈现项目

Blazor虚拟化组件不在滚动上呈现项目,blazor,blazor-server-side,.net-5,Blazor,Blazor Server Side,.net 5,我正在尝试使用.NET5和blazor创建一个论坛网站。为了有效地加载论坛线程,我正在尝试使用新的虚拟化组件。 不过我有个问题。它只加载前35个项目,然后不响应滚动,所以我有一个巨大的空白空间,项目应该加载在那里 下面是代码的页面 请不要介意LoadSvar方法只是获取列表中的一个范围,它目前只是用于测试。它最终将调用一个范围为的服务 @page”/Traade/{traadid} @使用ViewModels.Traade @使用Entities.Traad @注入ISvarService Sv

我正在尝试使用.NET5和blazor创建一个论坛网站。为了有效地加载论坛线程,我正在尝试使用新的
虚拟化组件。
不过我有个问题。它只加载前35个项目,然后不响应滚动,所以我有一个巨大的空白空间,项目应该加载在那里

下面是代码的页面

请不要介意LoadSvar方法只是获取列表中的一个范围,它目前只是用于测试。它最终将调用一个范围为的服务

@page”/Traade/{traadid}
@使用ViewModels.Traade
@使用Entities.Traad
@注入ISvarService SvarService
@注入ICurrentUserService当前用户服务
@如果(_已加载)
{
@*@foreach(在_listSvarViewModel.svar中的var svar)*@
@* { *@
@*_svarCount++*@
@*if(svar.ishiden&!\u listSvarViewModel.IsAdmin)*@
@*     { *@
@*继续*@
@*     } *@
@*      *@
@*@if(_svarCount==_total)*@
@*         { *@
@*              *@
@*         } *@
@*          *@
@*      *@
@* } *@
@如果(_已验证)
{
}
其他的
{
}
}
其他的
{
}
@代码{
[CascadingParameter]
私人任务

正如您所看到的,它不会加载更多的项目

它在render上触发LoadSvar方法,该方法渲染了400多个项目中的35个。但是滚动不会再次触发该方法来加载更多项目

我在这里发牢骚。out注释的
foreach
循环不够快,所以我真的想让
虚拟化
组件工作。

更改
OnAfterRender()
OnParametersSetAsync()
以不调用
StateHasChanged())
每次,这不是一个好主意。另外,请删除
SetParametersAsync()

bool\u loaded=false;
受保护的重写异步任务OnParametersSetAsync()
{
等待UpdatePageInformation();
_isAuthenticated=等待CurrentUserService.isAuthenticated();
}
受保护的覆盖无效OnAfterRender(布尔firstRender)
{
if(firstRender)
{
_加载=真;
StateHasChanged();
}
}

我认为这很可能是CSS问题(这也是为什么调试如此困难的原因),您的屏幕截图显示了一些自定义样式,可以证实这一点

虚拟化组件将对ItemsProvider委托进行初始调用,以获取第一批项目。此处请求的项目数取决于组件的当前高度、每个项目的高度(默认为50 px)也正是通过这个初始调用,组件才知道总项目数

问题就从这里开始了。因为虚拟化组件现在知道了项目的总数,所以它还可以计算自己的总高度(包括尚未渲染的项目)。如果虚拟化组件的高度是无限增长的,以适应其内容(我断言这里就是这种情况),则不会出现滚动条,并且由于您无法滚动,因此不会触发其他提供程序调用。然后,您还会看到前35项下方有一个较大的空间,该空间应与(400-35)*50px的高度相匹配

您可以通过向虚拟化组件添加类似style=“height:300px”的内容来轻松验证是否存在这种情况。我还建议您使用浏览器的DOM explorer来验证所涉及元素的尺寸,并检查哪个元素(如果有)在可能不应该显示滚动条的情况下具体显示滚动条


编辑:再次查看您的代码,我认为col-xl-6很可能是罪魁祸首。假设您使用引导,col基于flexbox,flex项通常会无限增长以匹配其内容。

浏览器控制台中有任何错误吗?您是否尝试过使用
而不是
项Provider
如果可以的话?@user3071284没有错误,是的,我两个都试过了。我可以再试一次,然后返回报告确认。返回到项目没有帮助。很公平。这样做了。它似乎提高了性能。谢谢。但是虚拟化仍然不起作用。我不明白为什么。你能共享一个显示问题的项目吗?我会尝试创建一个似乎可行的。我将尝试查看您提供给我的信息。谢谢。