2010-01-30 24 views
7

olan ItemsSource numaralı bir Silverlight DataGrid'da belirli bir satıra (nesne kimliğine göre) kaydırmak mümkün mü?Bir Silverlight DataGrid'de bir PagedCollectionView ile ScrollIntoView() kullanabilir misiniz?

Gün/durum grubuna göre gruplandırılmış siparişlerin bir listesini yüklüyorum. Belirli bir sıraya kaydırılabilmem gerekiyor.

var pcv = new PagedCollectionView(e.Result.Orders); 
gridOrders.ItemsSource = pcv; 

Maalesef ScrollIntoView(order) çünkü PagedCollectionView arasında çalışmaz.

An article on DataGrid from MSDN, PagedCollectionView'daki bir gruba ilerlemenin mümkün olduğunu gösterir, ancak bu gerçekten çok fazla kullanım değildir.

foreach (CollectionViewGroup group in pcv.Groups) 
    { 
     dataGrid1.ScrollIntoView(group, null); 
     dataGrid1.CollapseRowGroup(group, true); 
    } 

Bunu yapmanın bir yolu var mı?

cevap

7

Evet, öğe kaynağı PagedCollectionView olduğunda öğeleri kaydırma yapmak mümkündür. Tanımladığınız grup kaydırma yöntemini kullanıyorum ve seçili öğeyi görüntüye kaydırıyorum. Bunu yapmak için, ben şöyle işlemine çağrı sevk görevlisi kullanan bir yardımcı yöntem vardır:

çünkü muhtemelen bir olay işleyicisi (doğrudan aradığında ben, çünkü aksi halde ScrollIntoView çağrısı başarısız olur BeginInvoke kullanılan
private void ScrollCurrentSelectionIntoView() 
{ 
    this.dataGrid.Dispatcher.BeginInvoke(() => 
    { 
     this.dataGrid.ScrollIntoView(
      this.dataGrid.SelectedItem, 
      this.dataGrid.CurrentColumn); 
    }); 
} 

DataGrid, ele alınan etkinlik için durumunu düzgün bir şekilde güncellememişti). Bu yaklaşım, kaydırmayı çağırmadan önce geçerli olay işlemenin düzgün bir şekilde tamamlanmasını sağlar.

İlgili konular