2010-04-01 54 views
4

我尝试使用以下方法,但似乎无法在数据绑定列表框上工作。以编程方式滚动Silverlight列表框

mylistbox.ScrollIntoView(mylistbox.Items[mylistbox.Items.Count - 1]) 

我也想抓IScrollProvider没有成功:

var lbItemAutomation = (ListBoxAutomationPeer)ListBoxAutomationPeer.CreatePeerForElement(mylistbox); 
var listBoxScroller = (IScrollProvider)lbItemAutomation.GetPattern(PatternInterface.Scroll); <-- returns null value 

感谢, 瑞奇

更新4/1: 之后重,我确认了第一种方法作品。但是,获得第二种方法会很好,因为您可以通过此方法按百分比滚动。所以任何帮助将不胜感激。

回答

3

正常工作由我:

<StackPanel Orientation="Horizontal"> 

    <ListBox x:Name="_lbx" ItemsSource="{Binding SimpleItems}" Height="100"/> 
    <Button Content="Scroll" Click="DoScroll" /> 
</StackPanel> 

代码隐藏:

在构造

SimpleItems = new List<string>{ "hello", "world", "the world", "is coming", "to an end", "in 2012", "or maybe", "sometime", "in the future"}; 

DataContext = this; 

然后:

public List<string> SimpleItems { get; set; } 


private void DoScroll(object sender, RoutedEventArgs e) { 

    _lbx.ScrollIntoView(_lbx.Items[_lbx.Items.Count - 1]); 
} 

你可以发布您的相关XAML和代码隐藏?

+0

你是对的,由于某种原因,它没有在我的第一次尝试。如果我不知道如何使第二种方法有效,我会接受你的答案。 – 2010-04-02 13:18:12

+0

SL版本可能存在问题。我有SL 4 RC,我可以进入滚动界面。然后添加: listBoxScroller.SetScrollPercent(-1,50); 滚动到列表中间。 – Timores 2010-04-02 13:56:43