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);
它不幫助我。我創建了一個小示例https://github.com/demas/listview_example並更新了問題。 – demas 2014-10-07 12:38:35
對不起,但我真的不感興趣加載完整陌生人的解決方案。相反,嘗試將您的'int'集合更改爲自定義類類型。如果你從後面的代碼中選擇一個項目,並調用ScrollIntoView,那麼你會發現它*工作正常......我測試了它是雙重確定的。 – Sheridan 2014-10-07 13:16:38
我不提供加載解決方案。你只能看瀏覽器上的代碼。無論如何,我按照你的意見,並重寫代碼使用自定義類類型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