2014-10-07 125 views
0

我有一个ListView:ListView控件 - 滚动至特定项目

<ListView ItemsSource="{Binding}" x:Name="LvLevels" 
        Margin="10 60 0 0" 
        SelectionChanged="LvLevels_SelectionChanged"> 

     <ListView.ItemContainerStyle> 
      <Style TargetType="ListViewItem"> 
       <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter> 
      </Style> 
     </ListView.ItemContainerStyle> 

     <ListView.ItemTemplate> 
      <DataTemplate> 
       <StackPanel> 

        <Border BorderBrush="White" BorderThickness="6"> 
         <TextBlock Text="{Binding}" 
            FontSize="56" FontWeight="ExtraBold" 
            Margin="10" 
            HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
            TextAlignment="Center"> 


         </TextBlock> 
        </Border> 

       </StackPanel> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 

,我需要选择特定项目,然后滚动ListView控件它。我可以选择项目:

LvLevels.SelectedItem = CurrentLevel; 

但我不能将ListView滚动到此项目。这里是我的代码:

LvLevels.ScrollIntoView(LvLevels.SelectedItem); 

我已经创建了演示示例here

这里是一个code里面设置的DataContext并设置选定条目:

 List<int> data = new List<int>(); 
     for (int i = 0; i <= 20; i++) 
      data.Add(i); 

     LvLevels.DataContext = data; 

     LvLevels.SelectedItem = LvLevels.Items[14]; 
     LvLevels.ScrollIntoView(LvLevels.SelectedItem); 

回答

0

我相信你的问题是由这一行造成的:

LvLevels.SelectedItem = CurrentLevel; 

而不是行的,使用这样的线路测试:

LvLevels.SelectedItem = LvLevels.Items[4]; 

问题是你只能用se将SelectedItem设置为实际的项目,该项目来自与ListView.ItemsSource属性绑定的数据。完成之后,致电LvLevels.ScrollIntoView应该可以正常工作。

+0

它不帮助我。我创建了一个小示例https://github.com/demas/listview_example并更新了问题。 – demas 2014-10-07 12:38:35

+0

对不起,但我真的不感兴趣加载完整陌生人的解决方案。相反,尝试将您的'int'集合更改为自定义类类型。如果你从后面的代码中选择一个项目,并调用ScrollIntoView,那么你会发现它*工作正常......我测试了它是双重确定的。 – Sheridan 2014-10-07 13:16:38

+0

我不提供加载解决方案。你只能看浏览器上的代码。无论如何,我按照你的意见,并重写代码使用自定义类类型https://github.com/demas/listview_example/blob/master/App6/MainPage.xaml.cs。对不起,但它不起作用。我用'windows-8.1'标签标记了我的问题。你写关于Windows 8.1的现代UI应用程序吗?如果你这样做,你能分享你的工作解决方案吗? – demas 2014-10-07 14:36:11