WPF循环滚动的界面数据更新问题
南天空 2016-04-17 12:13:05 我的WPF界面上有一个ScrollViewer里面是一个ListView,现在通过控制ScrollViewer的滚动条可以实现ListView的数据从上到下的平滑滚动,ListView中的数据来自于自定义的类,现在滚动实现了,但是怎么都实现不了在滚动过程中实时更新ListView的数据。
现在将滚动部分代码贴出来,求大神们指点怎么实现滚动中更新数据。试了不少办法了,都没解决,没招了ThreadPool,thread,Task都没有搞定。界面不是没反应就是卡死。求指点,着急!!
public ScreenScroll()
{
//滚动界面初始化数据代码
this.WindowState = System.Windows.WindowState.Maximized;
screenScrollViewModel = new ScreenScrollViewModel();
InitializeComponent();
//this.ListView1.DataContext = ScrollDataList1000;
this.DataContext = screenScrollViewModel;
this.ListView1.DataContext = screenScrollViewModel.ScrollDataCollection;
#region 用Timer来实现滚动
_scrollTimer = new System.Timers.Timer(1000);
_scrollTimer.Interval = 100;
_scrollTimer.Elapsed += new ElapsedEventHandler(OnTimerEclapse);
_scrollTimer.Enabled = true;
_scrollTimer.Start();
#endregion
}
#region 滚动界面
private void OnTimerEclapse(object sender,EventArgs ags)
{
this.Dispatcher.Invoke(DispatcherPriority.Normal, new TimerDelegate(ScrollForTimer));
}
private delegate void TimerDelegate();
private void ScrollForTimer()
{
if (Xposition < 600000)
{
this.ScrollViewer1.ScrollToVerticalOffset(Xposition);
Xposition += 1;
}
else
{
DXposition = this.ScrollViewer1.ScrollableHeight;
//DXposition -= 10;
this.ScrollViewer1.ScrollToVerticalOffset(300);
DXposition -= 10;
}
}
#endregion
更新ListView数据的代码主要是重新初始化数据 screenScrollViewModel ,重新绑定到界面
//screenScrollViewModel = new ScreenScrollViewModel();
//this.DataContext = screenScrollViewModel;
//this.GroupDetail1.DataContext = screenScrollViewModel.groupDetailViewModel;
//this.ListView1.DataContext = screenScrollViewModel.ScrollDataCollection;