Solved

Autoscroll a ListBox with databinding

Posted on 2011-09-08
4
613 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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

This article shows how to make a Windows 7 gadget that accepts files dropped from the Windows Explorer.  It also illustrates how to give your gadget a non-rectangular shape and how to add some nifty visual effects to text displayed in a your gadget.…
zlib is a free compression library (a DLL) on which the popular gzip utility is built.  In this article, we'll see how to use the zlib functions to compress and decompress data in memory; that is, without needing to use a temporary file.  We'll be c…
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…
Learn how to create flexible layouts using relative units in CSS.  New relative units added in CSS3 include vw(viewports width), vh(viewports height), vmin(minimum of viewports height and width), and vmax (maximum of viewports height and width).

920 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

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now