2
可以設置ListBox的偏移量嗎?我能找到的所有東西都是滾動到一個元素,但我需要將列表框滾動到任何位置。WP7中的ListBox偏移量
作爲替代方案,還有其他組件可以虛擬化它們的項目,並且我可以控制偏移量?
可以設置ListBox的偏移量嗎?我能找到的所有東西都是滾動到一個元素,但我需要將列表框滾動到任何位置。WP7中的ListBox偏移量
作爲替代方案,還有其他組件可以虛擬化它們的項目,並且我可以控制偏移量?
你可以得到ListBox的ScrollViewer中,並使用其ScrollToVerticalOffset-method.爲了得到ScrollViewer中,比如,你可以掛接到ListBox的加載事件類似如下:
XAML:
<ListBox Loaded="HookScrollViewer">
代碼 - 背後:
private void HookScrollViewer(object sender, RoutedEventArgs e)
{
var element = (FrameworkElement)sender;
var scrollViewer = ControlHelpers.FindChildOfType<ScrollViewer>(element);
if (scrollViewer == null)
return;
this.myScrollViewer = scrollViewer;
}
的ControlHerlpers.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;
}
現在您在myScrollViewer成員中擁有ListBox的ScrollViewer,您可以直接訪問其方法。例如,滾動底部,你可以撥打:
this.myScrollViewer.ScrollToVerticalOffset(double.MaxValue);
如果我不設置很多時間確定補償... – 2012-01-31 12:35:39
喜邁克爾,你可以儘可能幫助我,它工作正常?我在同一頁上有兩個列表框,並且數據混淆了,如何使用上面的代碼獲取第二個列表框? – Bohrend 2013-09-20 13:57:11
它的作品非常棒..... – URAndroid 2014-11-24 14:28:12