Die ScrollIntoView() -Methode scrollt das letzte Element in die Ansicht, jedoch muss listBox.UpdateLayout() kurz vor ScrollIntoView() aufgerufen werden. Dies ist die komplette Methode mit Code:
// 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 für Hinweise, wie Silverlight das grundlegendste Feature auf einer ListBox ausließ, die ich mir vorstellen kann. WinForms hat es für immer gehabt! Schade, dass du momentan kein Mitglied bist :) –