如何连续滚动DataGrid?

时间:2011-02-22 10:25:27

标签: silverlight

我需要连续滚动DataGrid,因此它将每秒移动到下一行(例如),并在到达结束时移动到第一个项目。 Plz建议这项任务的最佳方式。

1 个答案:

答案 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