在Silverlight中,DataGrid、Listbox等控件与数据(List<T>或ObservableCollection<T>)绑定后,当数据发生更新后,之前选中行的视觉效果将消失掉。如要始终把握选中行永久处在其视觉效果下,方法如下:
选中项改变时记录其位置:
private int pos = -1;
private void MainListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { pos = MainListBox.SelectedIndex; }
数据发生改变之后执行这一行即可:
(this.MainListBox.ItemContainerGenerator.ContainerFromIndex(pos) as ListBoxItem).Focus();