El método ScrollIntoView() desplazará el último elemento a la vista, sin embargo debe llamarse a listBox.UpdateLayout() justo antes de ScrollIntoView(). Aquí es un método completo con el código:
// note that I am programming Silverlight on Windows Phone 7
public void AddItemAndScrollToBottom(string message)
{
string timestamp = DateTime.Now.ToString("mm:ss");
var item = new ListBoxItem();
item.Content = string.Format("{0} {1}", timestamp, message);
// note that when I added a string directly to the listbox, and tried to call ScrollIntoView() it did not work, but when I add the string to a ListBoxItem first, that worked great
listBoxEvents.Items.Add(item);
if (listBoxEvents.Items.Count > 0)
{
listBoxEvents.UpdateLayout();
var itemLast = (ListBoxItem)listBoxEvents.Items[listBoxEvents.Items.Count - 1];
listBoxEvents.UpdateLayout();
listBoxEvents.ScrollIntoView(itemLast);
}
}
+1 para señalar cómo Silverlight omitió la función más básica de un ListBox que puedo imaginar. ¡WinForms lo ha tenido para siempre! Es una pena que en realidad no eres miembro en este momento :) –