Xceed DataGridControlでItemsSourceを変更すると、垂直および水平のスクロールバーがすぐに左上にリセットされます。
それを防ぐ方法はありますか?
Xceed DataGridControlでItemsSourceを変更すると、垂直および水平のスクロールバーがすぐに左上にリセットされます。
それを防ぐ方法はありますか?
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;
}
}
}