Feedback

C# - ListBox ScrollViewer is on the bottom

Veröffentlicht von am 7/6/2015
(1 Bewertungen)
Diese Methode ermittelt wann der ScrollViewer am Ende einer ListBox ist.

Namespace:
System.Window.Media.Visual

XAML
<ListBox ScrollViewer.ScrollChanged="c_listBox_ScrollChanged"/>
private void c_listBox_ScrollChanged(object sender, ScrollChangedEventArgs e)
        {
            ScrollViewer viewer = GetDescendantByType(BoxedListBox, typeof(ScrollViewer)) as ScrollViewer;

            if (viewer.VerticalOffset == viewer.ScrollableHeight)
            { }
        }

public Visual GetDescendantByType(Visual element, Type type)
        {
            if (element == null) return null;
            if (element.GetType() == type) return element;
            Visual foundElement = null;
            if (element is FrameworkElement)
            {
                (element as FrameworkElement).ApplyTemplate();
            }
            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(element); i++)
            {
                Visual visual = VisualTreeHelper.GetChild(element, i) as Visual;
                foundElement = GetDescendantByType(visual, type);
                if (foundElement != null)
                    break;
            }
            return foundElement;
        }
Abgelegt unter ListBox, ScrollViewer, ScrollChanged, bottom, wpf.

3 Kommentare zum Snippet

Koopakiller schrieb am 7/6/2015:
Warum so kompliziert? Ich habe der Beschreibung nach an das da gedacht:
if (scrollViewer.VerticalOffset == scrollViewer.ScrollableHeight)
{
MessageBox.Show("Am Ende...");
}
Stefan Kern schrieb am 7/8/2015:
Ich auch... was macht das snippet besser?
Enrico Wüstenberg schrieb am 7/12/2015:
Ich habe es für ein Custom Control benötigt.
Zudem ist die "Abkürzung" auch im Snippet drin. Kann jeder selber entscheiden.
 

Logge dich ein, um hier zu kommentieren!