WPF工具包数据网格在绑定到16K行DataTable时崩溃

时间:2011-07-11 17:45:33

标签: wpf performance mvvm datagrid binding

我正在使用MVVM模式重新创建搜索控件。我们当前的实现执行了许多代码隐藏工作来创建此控件。

我在SearchControl.xaml中有一个WPF Toolkit Datagrid

<wtk:DataGrid Name="ResultsGrid"
          Grid.Row="4"
          Grid.ColumnSpan="4"
          Height="Auto"
          AutoGenerateColumns="True"
          ItemsSource="{Binding Path=.}"
          DataContext="{Binding Path=Results}"
          CanUserAddRows="False"
          CanUserDeleteRows="False"
          IsReadOnly="True"
          AutoGeneratedColumns="ResultsGrid_AutoGeneratedColumns"
          VerticalScrollBarVisibility="Auto"/>

控件绑定到SearchControlViewModel,它具有Results属性

    public DataTable Results
    {
        get { return _results; }
        set
        {
            _results = value;
            OnPropertyChanged("Results");
            OnPropertyChanged("ShowResults");
        }
    }

这适用于较小的数据集,但在给定16K +行的数据表时会崩溃。这本质上是当前实现的粘贴再现的副本,主要区别在于通过Binding应用DataGrid的数据上下文,而不是在代码隐藏中设置它。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我的数据网格未被其父级正确包含,导致其没有垂直大小限制。正在显示所有行,并且没有发生虚拟化。