Silverlight Datagrid滚动,DataGrid触发RowLoading事件

时间:2013-09-07 08:18:40

标签: datagrid silverlight-4.0

Silverlight DataGrid滚动,DataGrid会触发RowLoading个事件。如何阻止滚动事件触发RowLoadingRow事件?

2 个答案:

答案 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。