Imports System.Windows.Interactivity Public Class ScrollIntoViewForListBox Inherits Behavior(Of ListBox) ''' ''' When Beahvior is attached ''' Protected Overrides Sub OnAttached() MyBase.OnAttached() AddHandler Me.AssociatedObject.SelectionChanged, AddressOf AssociatedObject_SelectionChanged End Sub ''' ''' On Selection Changed ''' ''' ''' Private Sub AssociatedObject_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) If TypeOf sender Is ListBox Then Dim listBox As ListBox = TryCast(sender, ListBox) If listBox.SelectedItem IsNot Nothing Then listBox.Dispatcher.BeginInvoke(DirectCast(Sub() listBox.UpdateLayout() If listBox.SelectedItem IsNot Nothing Then listBox.ScrollIntoView(listBox.SelectedItem) End If End Sub, Action)) End If End If End Sub ''' ''' When behavior is detached ''' Protected Overrides Sub OnDetaching() MyBase.OnDetaching() RemoveHandler Me.AssociatedObject.SelectionChanged, AddressOf AssociatedObject_SelectionChanged End Sub End Class