WPF Toolkit numaralı telefondan DataGrid
kullanıyorum ve kılavuzun alt kısmında (yani son satır) odaklanmayı sürdürmem gerekiyor. Şu anda karşılaştığım sorun, satırlar eklendiğinde DataGrid
için kaydırma çubuğunun eklenecek yeni satırlarla birlikte kaydırılmamasıdır. Bunu başarmanın en iyi yolu nedir?WPF DataGrid - Yeni satırlar eklendikçe DataGrid'in alt kısmına nasıl odaklanılır?
cevap
DataGrid.ScrollIntoView(<item>)
, odağı DataGrid
'un alt kısmında tutacak gibi görünüyor.
Bu LoadingRow olayı kullanarak basit bir yaklaşımdır: ızgara yükleme tamamlandıktan sonra
void dataGrid_LoadingRow(object sender, System.Windows.Controls.DataGridRowEventArgs e)
{
dataGrid.ScrollIntoView(e.Row.Item);
}
Sadece devre dışı bırakmayı unutmayın
.ScrollIntoView yöntemini çağırmak için en yararlı sürenin ScrollViewer.ScrollChanged ekli etkinliğinden olduğunu buldum. Bu aşağıdaki gibi XAML ayarlanabilir:
<DataGrid
...
ScrollViewer.ScrollChanged="control_ScrollChanged">
ScrollChangedEventArgs nesne düzenini hesaplamak için yararlı olabilir ve pozisyon (Kapsamının, Ofset, Görünüm) kaydırabilirsiniz çeşitli özellikleri vardır. Varsayılan DataGrid sanallaştırma ayarlarını kullanırken bunların tipik olarak satır/sütun sayılarıyla ölçüldüğünü unutmayın.
Kullanıcı, ızgaradaki öğeleri görüntülemek için kaydırma çubuğunu hareket ettirmedikçe, DataGrid'e yeni öğeler eklendikçe alt öğeyi görüntüleyen bir örnek uygulamadır.
private void control_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
// If the entire contents fit on the screen, ignore this event
if (e.ExtentHeight < e.ViewportHeight)
return;
// If no items are available to display, ignore this event
if (this.Items.Count <= 0)
return;
// If the ExtentHeight and ViewportHeight haven't changed, ignore this event
if (e.ExtentHeightChange == 0.0 && e.ViewportHeightChange == 0.0)
return;
// If we were close to the bottom when a new item appeared,
// scroll the new item into view. We pick a threshold of 5
// items since issues were seen when resizing the window with
// smaller threshold values.
var oldExtentHeight = e.ExtentHeight - e.ExtentHeightChange;
var oldVerticalOffset = e.VerticalOffset - e.VerticalChange;
var oldViewportHeight = e.ViewportHeight - e.ViewportHeightChange;
if (oldVerticalOffset + oldViewportHeight + 5 >= oldExtentHeight)
this.ScrollIntoView(this.Items[this.Items.Count - 1]);
}
- 1. WPF DataGrid,
- 2. WPF DataGrid stili-Silverlight DataGrid?
- 3. WPF DataGrid
- 4. WPF Datagrid Sütunu nasıl odaklanır?
- 5. WinRT'deki bir TextBox'ın alt kısmına nasıl programlanır?
- 6. WPF DataGrid AutoSize Sayı
- 7. Datatables sDom challenge tablonun sol alt kısmına yeni eleman ekle
- 8. WPF DataGrid multiselect bağlama
- 9. WPF ToolKit DataGrid Performansı
- 10. WPF Datagrid satır numarası
- 11. WPF DataGrid İyi Öğreticiler?
- 12. WPF DataGrid Kontrol Şablonu
- 13. WPF DataGrid filtresi
- 14. WPF DataGrid Sütun Genişliği
- 15. WPF DataGrid FareVeri VermeGridRow
- 16. Sayfanın alt kısmına altbilgi nasıl ekleyebilirim? Wkhtmltopdf
- 17. DIV nasıl odaklanılır?
- 18. INSERT yeni satırlar zaten
- 19. Force DataGrid sütun doğrulaması (WPF)
- 20. WPF DataGrid seçili satır stili
- 21. Özel sütunlarla WPF datagrid bağlaması
- 22. Güncelleştirme, yeni satırlar
- 23. WPF Toolkit Datagrid - seçimi nasıl kapatıyorsunuz?
- 24. WPF: DataGrid çok satırlı metni nasıl girebilirim
- 25. WPF DataGrid - sütuntan öğeleri al
- 26. Animasyon WPF DataGrid Satır Ayrıntıları
- 27. wpf datagrid left padding'i kaldır
- 28. WPF DataGrid, PropertyChanged üzerinde güncelleştirilmiyor
- 29. wpf DataGrid sütun genişliği, ListBox
- 30. Görüntü hiyerarşisinin alt kısmına görünüm ekleme
Bu yöntemi nerede kullanırsınız? – joe
yapar. Sadece veri kaynağınızı yeni öğe ile güncelledikten sonra bir çağrı yapın. ScrollIntoView'dan önce UpdateLayout() öğesini çağırdığınızdan emin olun! – Vinzz
Neden önce UpdateLayout() öğesini çağırmanız gerekiyor? Bunu yapmak zorunda değildim. Bir sebepten ötürü en iyi uygulama mı? –