Jak programowo uzyskać pozycję scrollbar ItemsControl?

Mam dołączone zachowanie do elementu ItemsControl, który przewija się w dół po każdym dodaniu nowego elementu. Ponieważ pracuję nad programem typu czatu, nie chcę go przewijać, jeśli użytkownik ma pasek przewijania w dowolnym miejscu innym niż samo dno, ponieważ w przeciwnym razie byłoby to bardzo denerwujące (niektóre programy do czatowania robią to i to jest okropne).

Jak to osiągnąć? Nie wiem, jak uzyskać dostęp do zawijania ScrollViewer lub dowiedzieć się, czy muszę go wyświetlić, czy nie.

To jest klasa zachowania, którą dostałem od kogoś na StackOverflow. Nadal sam uczę się o zachowaniach.

public class ScrollOnNewItem : Behavior<ItemsControl>
{
    protected override void OnAttached()
    {
        AssociatedObject.Loaded += OnLoaded;
        AssociatedObject.Unloaded += OnUnLoaded;
    }

    protected override void OnDetaching()
    {
        AssociatedObject.Loaded -= OnLoaded;
        AssociatedObject.Unloaded -= OnUnLoaded;
    }

    private void OnLoaded(object sender, RoutedEventArgs e)
    {
        var incc = AssociatedObject.ItemsSource as INotifyCollectionChanged;
        if (incc == null) return;

        incc.CollectionChanged += OnCollectionChanged;
    }

    private void OnUnLoaded(object sender, RoutedEventArgs e)
    {
        var incc = AssociatedObject.ItemsSource as INotifyCollectionChanged;
        if (incc == null) return;

        incc.CollectionChanged -= OnCollectionChanged;
    }

    private void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
    {
        if (e.Action == NotifyCollectionChangedAction.Add)
        {
            int count = AssociatedObject.Items.Count;
            if (count == 0)
                return;

            var item = AssociatedObject.Items[count - 1];

            var frameworkElement = AssociatedObject.ItemContainerGenerator.ContainerFromItem(item) as FrameworkElement;
            if (frameworkElement == null) return;

            frameworkElement.BringIntoView();
        }
    }
}

questionAnswers(2)

yourAnswerToTheQuestion