Hallo Leute.
In einem DataGrid soll die erste sichtbare / angezeigte Zeile ermittelt werden. NICHT das CurrentItem! Das kann längst aus dem sichtbaren Bereich gescrollt oder gar nicht erst gesetzt sein.
Warum will man das wissen?
Mein Programm enthält ein Datagrid dessen ItemsCollection ich mir hole. Dann startet eine Suche und das passende Item wird per ScrollIntoView ins Bild geholt. Soweit funktioniert es.
Je nachdem ob das Item nun einen höhern oder niedriegeren Index als die sichtbaren Items hat, liegt es nach dem ScrollIntoView ganz oben oder ganz unten am Rand des DataGrids.
Wenn ich die Position kenne, dann lässt sich vor dem ScrollIntoView ein Offset aufschlagen; negativ oder positiv. Dann läge das Item übersichtlich in der Mitte.
Die Suche im Netz hat da nicht wirklich etwas ergeben...
Hat einer ne Idee?
Gruß
eddi
In einem DataGrid soll die erste sichtbare / angezeigte Zeile ermittelt werden. NICHT das CurrentItem! Das kann längst aus dem sichtbaren Bereich gescrollt oder gar nicht erst gesetzt sein.
Warum will man das wissen?
Mein Programm enthält ein Datagrid dessen ItemsCollection ich mir hole. Dann startet eine Suche und das passende Item wird per ScrollIntoView ins Bild geholt. Soweit funktioniert es.
Je nachdem ob das Item nun einen höhern oder niedriegeren Index als die sichtbaren Items hat, liegt es nach dem ScrollIntoView ganz oben oder ganz unten am Rand des DataGrids.
Wenn ich die Position kenne, dann lässt sich vor dem ScrollIntoView ein Offset aufschlagen; negativ oder positiv. Dann läge das Item übersichtlich in der Mitte.
VB.NET-Quellcode
- Dim DG As DataGrid = DirectCast(LogicalTreeHelper.FindLogicalNode(Current.MainWindow, "Alle_Timer_einzeln_DataGrid"), DataGrid)
- Dim View = DG.Items
- For i = View.Count - 1 To 0 Step -1
- Dim Item = DirectCast(View(i), Timer_einzeln_Klasse)
- If Item.PC_Name.ToLower = Name Then
- DG.ScrollIntoView(View(i))
- Exit For
- End If
- Next
Die Suche im Netz hat da nicht wirklich etwas ergeben...
Hat einer ne Idee?
Gruß
eddi