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对象的集合
}