ScrollViewer.ScrollToVerticalOffset メソッドと完全に連携
ステップ I. listA の Loaded イベントを呼び出す
<ListBox Name="ListA" Loaded="HookScrollViewer">
ステップⅡ。「HookScrollViewer」メソッドを定義する
private void HookScrollViewer(object sender, RoutedEventArgs e)
{
var element = (FrameworkElement)sender;
var scrollViewer = FindChildOfType<ScrollViewer>(element);
if (scrollViewer == null)
return;
scrollViewer.ScrollToVerticalOffset(lstA.SelectedIndex);
}
ステップⅢ。「FindChildOfType」メソッドを定義する
public static T FindChildOfType<T>(DependencyObject root) where T : class
{
var queue = new Queue<DependencyObject>();
queue.Enqueue(root);
while (queue.Count > 0)
{
var current = queue.Dequeue();
for (int i = VisualTreeHelper.GetChildrenCount(current) - 1; 0 <= i; i--)
{
var child = VisualTreeHelper.GetChild(current, i);
var typedChild = child as T;
if (typedChild != null)
{
return typedChild;
}
queue.Enqueue(child);
}
}
return null;
}
そして、それは「ListA」で動作します(ListAをListBoxの名前に置き換えます)
参照: WP7 の ListBox オフセット