Solved

Autoscroll a ListBox with databinding

Posted on 2011-09-08
4
620 Views
Last Modified: 2013-11-12
Hello everybody

I got a ListBox with a databinding and I would like that to automaticly scroll to the bottom when a new item is added.

I know that I can use the ScrollIntoView() method to scroll the ListBox. But I can't use this, because the ListBox gets its items by a databinding.

Does anyone know a solution to my problem?

Thank you for your help!
Urs
0
Comment
Question by:innovasoft
  • 2
  • 2
4 Comments
 
LVL 8

Expert Comment

by:jagrut_patel
ID: 36508101
Is it SL or WPF? I tried this in WPF with databound ListBox and it works for me.

YourListBox.ScrollIntoView(YourListBox.Items[YourListBox.Items.Count - 1]);
YourListBox.SelectedIndex = YourListBox.Items.Count - 1;
0
 
LVL 1

Author Comment

by:innovasoft
ID: 36509677
oh, I forgot to tell: it's Silverlight

yes, I know that it works with ScrollIntoView. But the problem is, that I have the ListBox in the view bound to a property in the model. I did this, that I don't have to refresh the listbox manually. But now, the view doesn't really have an event when the listbox is updated with a new item. So there is no moment when I can use this ScrollIntoView.

Or is there something like an event "ItemsUpdated"?
0
 
LVL 8

Accepted Solution

by:
jagrut_patel earned 500 total points
ID: 36509774
In SL,

1. I bound the ListBox with an ObservableCollection, like
    private ObservableCollection<Employee> employeeList;
    lstEmployees.ItemsSource = employeeList;

2. After new item is added into employeeList I wrote

lstEmployees.ScrollIntoView(lstEmployees.Items[lstEmployees.Items.Count - 1]);
lstEmployees.SelectedIndex = lstEmployees.Items.Count - 1;


It works perfectly for me. Last items gets selected. Is there anything I'm doing differently than what you need?
0
 
LVL 1

Author Comment

by:innovasoft
ID: 36511159
yes, I think there is a difference. I have separated the model and the view. So the employeeList would be in the model while the ListBox is in the view. Since the model doesn't know the view, it can't do the lstEmployees.ScrollIntoView method.

But as I'm writing this, I think I could fire a custom event such as newItemAdded. The view should listen to that so I could put this code in the view anyway :)

Thank you for your help!
0

Featured Post

Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

For a while now I'v been searching for a circular progress control, much like the one you get when first starting your Silverlight application. I found a couple that were written in WPF and there were a few written in Silverlight, but all appeared o…
Whether you've completed a degree in computer sciences or you're a self-taught programmer, writing your first lines of code in the real world is always a challenge. Here are some of the most common pitfalls for new programmers.
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…

856 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question