I have a WPF ListBox that is set to scroll horizontally. The ItemsSource is bound to an ObservableCollection in my ViewModel class. Every time a new item is added, I want the ListBox to scroll to the right so that the new item is viewable.
The ListBox is defined in a DataTemplate, so I am unable to access the ListBox by name in my code behind file.
How can I get a ListBox to always scroll to show a latest added item?
I would like a way to know when the ListBox has a new item added to it, but I do not see an event that does this.
Best Answer
You can extend the behavior of the ListBox by using attached properties. In your case I would define an attached property called
ScrollOnNewItem
that when set totrue
hooks into theINotifyCollectionChanged
events of the list box items source and upon detecting a new item, scrolls the list box to it.Example:
Usage:
UPDATE As per Andrej's suggestion in the comments below, I added hooks to detect a change in the
ItemsSource
of theListBox
.