Silverlight DataGrid
滚动,DataGrid
会触发RowLoading
个事件。如何阻止滚动事件触发RowLoadingRow
事件?
答案 0 :(得分:2)
由于行已虚拟化,因此会触发RowLoading事件。通过虚拟化,只有在屏幕上显示行时才会创建(和加载)行。 因此,每次向下或向上滚动时,都会创建,加载新行并触发RowLoading事件。
要禁用虚拟化,您可以尝试设置此属性:
VirtualizingStackPanel.VirtualizationMode="Standard"
请注意,如果您有很多行,这会降低网格的性能。
答案 1 :(得分:2)
我希望这会有所帮助,这在Silverlight中运行。
void grid_LoadingRow(object sender, DataGridRowEventArgs e)
{
YourViewModel vm = this.DataContext as YourViewModel;
//prevent the LoadingRow on Scroll
if (vm.NumRowsLoaded >= vm.NumRowsTotal)
return;
vm.NumRowsLoaded += 1;
RowObject c = e.Row.DataContext as RowObject;
if (c != null)
{
//Your styling options
}
}
在为数据收费时,您必须在ViewModel中控制NumRowsLoaded和NumRowsTotal。