Как получить положение полосы прокрутки ItemsControl программно?

У меня есть прикрепленное поведение к ItemsControl, который прокручивается вниз, когда добавляется новый элемент. Поскольку я работаю над программой типа чата, я не хочу, чтобы она прокручивалась, если у пользователя есть полоса прокрутки где-либо, кроме самого нижнего, поскольку это было бы очень раздражающим в противном случае (некоторые программы чата делают это, и это ужасно).

Как мне это сделать? Я не знаю, как получить доступ к упаковочному ScrollViewer или каким-то иным образом выяснить, нужно ли мне его показывать или нет.

Это класс поведения, который я на самом деле получил от кого-то в StackOverflow. Я все еще учусь поведению.

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();
        }
    }
}

Ответы на вопрос(2)

Ваш ответ на вопрос