Xceed DataGrid重置ScrollBar位置

时间:2010-05-07 22:57:51

标签: wpf xceed-datagrid xceed

当我更改Xceed DataGridControl中的ItemsSource时,我的垂直和水平滚动条会立即重置到顶部/左侧。

任何想法如何防止这种情况发生?

1 个答案:

答案 0 :(得分:3)

我终于修复并弄清楚为什么每次我的DataGrid刷新时我的滚动条会跳到顶部/左边。

将绑定到View的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;
      }
   }
}