none
ListView.ScrollIntoView RRS feed

  • Frage

  • Hallo,
    ich habe einen Listview in einer Übersichtspage. Wenn ich herunterscrolle und einen Eintrag zum Editieren in einer neuen Detailpage auswähle so ist der Eintrag beim zurückgehen zwar ausgewählt aber nicht im sichtbaren Bereich.
    Wie verwende ich hier ScrollIntoView so das es auch funktioniert?
    Derzeit:
       private void Entries_Current_List_ListView_GotFocus(object sender, RoutedEventArgs e)
        {
          if (ViewModel.Entries_Current_List_Entry_Selected != null
              && Entry_List_Page_Entries_Current_List_ListView.Visibility ==
                 Visibility.Visible)
          {
            Entry_List_Page_Entries_Current_List_ListView.
            ScrollIntoView(ViewModel.Entries_Current_List_Entry_Selected,
            ScrollIntoViewAlignment.Leading);
          }
        }
    
    Grüße und Danke
    Markus

    Montag, 19. November 2018 08:10

Antworten

  • Hi Markus,
    wenn die Höhe nicht explizit angeben oder durch den äußeren Container begrenzt ist, so dehnt sich das ListView so weit aus, wie es Platz benötigt. Da ist dann das ScrollIntiView wirkungslos, da ja immer alle Zeilen im ListView Platz haben.

    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP für Developer Technologies)
    Meine Homepage mit Tipps und Tricks

    • Als Antwort markiert Markus222 Montag, 19. November 2018 14:47
    Montag, 19. November 2018 14:09

Alle Antworten

  • Hi Markus,
    wenn eine neue Page instanziiert wird, dann bekommt das ListView nicht automatisch den Fokus und Dein Code ist wirkungslos. Wenn ich im PageLoaded das ScrollIntoView ausführe, dann funktioniert das bei mir wie gewünscht:

        private void Page_Loaded(object sender, RoutedEventArgs e)
        {
          if (ViewModel.CurrentItem != null)
            this.lv.ScrollIntoView(ViewModel.CurrentItem, ScrollIntoViewAlignment.Leading);
        }


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP für Developer Technologies)
    Meine Homepage mit Tipps und Tricks

    • Als Antwort vorgeschlagen Peter Fleischer Montag, 19. November 2018 14:10
    Montag, 19. November 2018 11:53
  • Hallo Peter,

    das mit PageLoaded funktionierte auch nicht. 

    Allerdings hatte ich im ListView keine Höhe angegeben. Mit MaxHeight="250" scheint es nun zu gehen.

    Grüße
    Markus

    Montag, 19. November 2018 14:05
  • Hi Markus,
    wenn die Höhe nicht explizit angeben oder durch den äußeren Container begrenzt ist, so dehnt sich das ListView so weit aus, wie es Platz benötigt. Da ist dann das ScrollIntiView wirkungslos, da ja immer alle Zeilen im ListView Platz haben.

    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP für Developer Technologies)
    Meine Homepage mit Tipps und Tricks

    • Als Antwort markiert Markus222 Montag, 19. November 2018 14:47
    Montag, 19. November 2018 14:09