Xceed DataGrid сбрасывает положение полосы прокрутки

Когда я меняю ItemsSource в Xceed DataGridControl, мои вертикальные и горизонтальные полосы прокрутки немедленно сбрасываются вверх/влево.

Есть идеи, как этого не допустить?


person Zamboni    schedule 07.05.2010    source источник


Ответы (1)


Наконец-то я исправил и понял, почему мои полосы прокрутки прыгают вверх/влево каждый раз, когда обновляется 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;
      }
   }
}
person Zamboni    schedule 13.08.2010