Когда я меняю ItemsSource в Xceed DataGridControl, мои вертикальные и горизонтальные полосы прокрутки немедленно сбрасываются вверх/влево.
Есть идеи, как этого не допустить?
Когда я меняю ItemsSource в Xceed DataGridControl, мои вертикальные и горизонтальные полосы прокрутки немедленно сбрасываются вверх/влево.
Есть идеи, как этого не допустить?
Наконец-то я исправил и понял, почему мои полосы прокрутки прыгают вверх/влево каждый раз, когда обновляется 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;
}
}
}