XCehter Datagridは、スクロールバーの位置をリセットします
-
04-10-2019 - |
質問
XCeed DatagridControlでアイテムソースを変更すると、私の垂直および水平スクロールバーがすぐに上/左にリセットされます。
それが起こらないようにする方法はありますか?
解決
私は最終的に修正して、Datagridがリフレッシュするたびにスクロールバーが上部/左にジャンプする理由を見つけました。
実際のDataSource(DataView)の代わりにXamlがビューにバインドされていることがわかります。したがって、各更新はビューとDataSourceに取って代わりました。 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;
}
}
}
所属していません StackOverflow