Я так понимаю, вы действительно хотите просто убедиться, что полоса прокрутки ListBox всегда полностью прокручивается вниз. Другие решения только для того, чтобы убедиться, что последняя строка видна (не то же самое).
Чтобы получить желаемый эффект, вы можете создать простой подкласс ListBox, подобный этому:
using System.Windows.Controls;
namespace ScrollBarTest
{
public class CustomListBox : ListBox
{
public void ScrollToBottom()
{
var scrollviewer = GetTemplateChild("ScrollViewer") as ScrollViewer;
scrollviewer.ScrollToVerticalOffset(scrollviewer.ScrollableHeight);
}
}
}
Не используйте внешний ScrollViewer, как в примере, только подклассный ListBox
Просто вызывайте метод ScrollToBottom () всякий раз, когда вы хотите, чтобы он был прокручен до последней строки.
Причина подкласса в том, что GetTemplateChild
равен protected
, поэтому недоступен извне производного класса.