2014-10-07 124 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