Laden...

WPF - VB.NET - ScrollViewer vom DataGrid in einem Frame

Erstellt von _Cashisclay vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.108 Views
_
_Cashisclay Themenstarter:in
277 Beiträge seit 2014
vor 6 Jahren
WPF - VB.NET - ScrollViewer vom DataGrid in einem Frame

Hallo zusammen,

ich hab ein DataGrid in einem Frame und möchte mir von dem DataGrid den ScrollViewer holen um den Wert des ScrollToVerticalOffset zu setzen.

Leider bekomm ich schon von der Funktion VistualTreeHelper.GetChildrenCount(DataGrid) eine 0 zurück, wenn ich das ganze außerhalb des Frames mit dem selben DataGrid ausführe bekomm ich einen Wert zurück.

Funktioniert so etwas grundsätzlich nicht wenn man eine Page in ein Frame geladen hat?

Grüße

_
_Cashisclay Themenstarter:in
277 Beiträge seit 2014
vor 6 Jahren

Konnte noch keiner Erfahrung damit sammeln oder hab ich meine Frage eventuell doof formuliert?

Grüße

5.658 Beiträge seit 2006
vor 6 Jahren

Hi _Cashisclay,

die Frage ist wirklich sehr speziell, und besonders viel Kontext gibst du auch nicht mit dazu. Ich habe so etwas jedenfalls noch nie gebraucht, weder den ScrollViewer eines DataGrids, noch mußte ich jemals "eine Page in ein Frame" laden.

Besser wäre, wenn du mal beschreibst, was du eigentlich vor hast damit. Da gibt es bestimmt eine einfacherer Herangehensweise.

Weeks of programming can save you hours of planning

_
_Cashisclay Themenstarter:in
277 Beiträge seit 2014
vor 6 Jahren

Habs gelöst, war nur dumm wie Scheiße .. 😕

    Public Sub set_VerticalOffset_From_ScrollViewer(ByVal VerticalOffset As Double)

        ' --- interne Variablen Deklaration --- '

        Dim iCount As Integer = 0

        Try

            If Not VisualTreeHelper.GetChildrenCount(DataGrid) = 0 Then

                Do While iCount < VisualTreeHelper.GetChildrenCount(DataGrid)

                    If TypeOf (VisualTreeHelper.GetChild(DataGrid, iCount)) Is Border Then

                        Dim Border As Border = VisualTreeHelper.GetChild(DataGrid, iCount)

                        If Not VisualTreeHelper.GetChildrenCount(Border) = 0 Then

                            If TypeOf (VisualTreeHelper.GetChild(Border, iCount)) Is ScrollViewer Then

                                Dim ScrollViewer As ScrollViewer = VisualTreeHelper.GetChild(Border, iCount)


                                If ScrollViewer IsNot Nothing Then

                                    ScrollViewer.ScrollToVerticalOffset(VerticalOffset)

                                End If

                            End If

                        End If

                    End If

                    iCount = iCount + 1

                Loop

            End If

        Catch ex As Exception
            Fehlerbehandlung = New Fehlerbehandlung
            Fehlerbehandlung.Fehlermeldung = ex
            Fehlerbehandlung.ShowDialog()
        End Try

    End Sub