跟小D每日学口语

Silverlight DataGrid超出列表高度时自动滚屏

今天在操作DataGrid时发现一个问题,当展示的数据已经超出了DataGrid的高度时,虽然会有滚动条出现,但是新增加的数据却没有在表格中显示,需要拖动滚动条之最低端才能够查看到刚刚新增的数据。

 

问题:当显示数据超出DataGrid显示的高度时,如何在添加数据后能自动查看该数据,而不需要拖动滚动条,如图示:

图中添加完编号为10的商品时,自动选择这一行并将滚动条自动显示最底端显示最后添加的数据。

 

解法:1:添加数据后添加的数据在最顶端显示,这样就不需要控制滚动条了,只需要控制数据绑定集合中的位置(想实现的朋友可以自己尝试下,重点解说第二种解法)

   2:添加数据后滚动条自动移动到最底端,显示最后添加的数据,并选中该数据

 

解法2代码

void btnProduct_Click(object sender, RoutedEventArgs e)
{

  OrderDetail item = new OrderDetail();//绑定对象中的明细(即列表中的一行数据)

  item.OrderDetail_Count = count != 0 ? count : string.IsNullOrEmpty(txtCount.Text) ? 1 : Convert.ToInt32(this.txtCount.Text);
  item.OrderDetail_ID = Guid.NewGuid();
  item.OrderDetail_Index = order.Items.Count + 1;

  //……各个item属性的代码省略,下面直接上关键代码

  order.Items.Add(item);
  this.dgOrder.ScrollIntoView(item, this.dgOrder.Columns[0]);//移动到刚刚添加的数据
  this.dgOrder.SelectedItem = item;//默认选择该数据

  this.dgOrder.ItemsSource = order.Items;//绑定数据源,order.Items是一个个OrderDetail对象的集合

}

 

posted @ 2012-03-30 12:08  艾洁  阅读(957)  评论(0编辑  收藏  举报