我需要连续滚动DataGrid,因此它将每秒移动到下一行(例如),并在到达结束时移动到第一个项目。 Plz建议这项任务的最佳方式。
答案 0 :(得分:3)
您可以使用Dispatcher,每秒都可以计算所选索引。 像这样:
private int selectedIndex;
public int SelectedIndex
{
get { return selectedIndex; }
set
{
selectedIndex = value;
NotifyPropertyChanged("SelectedIndex");
}
}
private void BuildDispatcher()
{
DispatcherTimer dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Interval = TimeSpan.FromSeconds(1);
dispatcherTimer.Tick += DispatcherTimerTick;
dispatcherTimer.Start();
}
void DispatcherTimerTick(object sender, EventArgs e)
{
if((SelectedIndex + 1) > MyCollection.Count)
{
SelectedIndex = 0;
}else
{
SelectedIndex++;
}
//EDIT!
MyDataGrid.SelectedIndex = SelectedIndex;
MyDataGrid.ScrollIntoView(MyDataGrid.SelectedItem, MyDataGrid.Columns[0]);
}
修改强>
所选索引在此后面的代码中设置,您也可以绑定它并在选择更改处理程序中执行ScrollIntoView内容。
BR,
TJ