Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 642
  • Last Modified:

Autoscroll a ListBox with databinding

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
innovasoft
Asked:
innovasoft
  • 2
  • 2
1 Solution
 
jagrut_patelCommented:
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
 
innovasoftAuthor Commented:
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
 
jagrut_patelCommented:
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
 
innovasoftAuthor Commented:
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

Veeam and MySQL: How to Perform Backup & Recovery

MySQL and the MariaDB variant are among the most used databases in Linux environments, and many critical applications support their data on them. Watch this recorded webinar to find out how Veeam Backup & Replication allows you to get consistent backups of MySQL databases.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now