2010-05-07 99 views

回答

3

我终于修好了,并找出为什么每次我的DataGrid刷新时,我的滚动条跳转到顶部/左侧。

发现绑定到视图的XAML而不是实际的数据源(DataView),因此每个刷新都替换了视图和数据源。作为绑定到DataView的结果,我的滚动条不再跳转,我的网格现在像它在工具1-2秒之前那样立即填充。

我包含了我的代码更改,以防将来帮助其他人。

旧代码结合视图:

<xcdg:DataGridControl Name="FileGrid" 
         AutoCreateColumns="False" 
         SelectionMode="Extended" 
         ReadOnly="True"   
         ItemsSource="{Binding FileGridDataSource}" 
         ItemScrollingBehavior="Immediate" 
         NavigationBehavior="RowOnly"> 
</xcdg:DataGridControl> 

public sealed class DataGridViewModel : ViewModelBase 
{ 
    public DataGridCollectionView FileGridDataSource 
    { 
     get 
     { 
     return _fileGridDataBoundSource; 
     } 
     set 
     { 
     _fileGridDataBoundSource = value; 
     NotifyPropertyChanged("FileGridDataSource"); 
     } 
    } 
} 

新代码绑定到DataView:

<Window.Resources> 
    <xcdg:DataGridCollectionViewSource x:Name="FileGridView" 
     x:Key="fileView" 
     Source="{Binding Path=GridData}" 
     AutoFilterMode="And" 
     AutoCreateItemProperties="True" 
     AutoCreateForeignKeyDescriptions="True" 
     DefaultCalculateDistinctValues="False"/> 
</Window.Resources> 

<Grid> 
    <xcdg:DataGridControl Name="FileGrid" 
         AutoCreateColumns="False" 
         SelectionMode="Extended" 
         ReadOnly="True"   
         ItemsSource="{Binding Source={StaticResource fileView}}" 
         ItemScrollingBehavior="Immediate" 
        NavigationBehavior="RowOnly"> 
    </xcdg:DataGridControl> 
</Grid> 

public sealed class DataGridViewModel : ViewModelBase 
{ 
    private DataTable _dt = new DataTable("MyDataTable"); 
    public DataView GridData 
    { 
     get 
     { 
     return _dt.DefaultView; 
     } 
    } 
}