如何导航到ListBox Windows Phone 8.1上的特定位置

时间:2015-08-16 21:16:21

标签: c# windows-phone-8.1

我有一个包含很多项目的列表框,点击时每个项目转到一个新页面,我想要的是当我从第二页返回时,点击该项目的相同位置!

这就是我的名单!

<ListBox x:Name="list" Loaded="ListView_Loaded" SelectedItem="true"  SelectionChanged="searchResultsList_SelectionChanged" ItemsSource="{Binding}" Background="{x:Null}">
                                    <!--<ListView.ItemContainerStyle>
                                        <Style TargetType="ListViewItem">
                                            <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                                            <Setter Property="Margin" Value="0,0,0,15" />
                                        </Style>
                                    </ListView.ItemContainerStyle>-->
                                    <ListBox.ItemTemplate>
                                        <DataTemplate>
                                            <Grid>
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition Width="80" />
                                                    <ColumnDefinition Width="10" />
                                                    <ColumnDefinition Width="*" />
                                                </Grid.ColumnDefinitions>

                                                <Border Width="80" Height="80">
                                                    <Image Source="{Binding Caminho}" />
                                                </Border>

                                                <StackPanel Margin="0,16,0,0" Grid.Column="2">
                                                    <TextBlock Foreground="White" Text="{Binding NomeCurso}" TextWrapping="Wrap" FontSize="{StaticResource TextStyleExtraLargeFontSize}" />

                                                </StackPanel>
                                            </Grid>
                                        </DataTemplate>
                                    </ListBox.ItemTemplate>
                                </ListBox>

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您使用的是WinRT,您可以在页面构造函数中编写以下代码来缓存它,这样,在您返回此页面后,这些位置将保持不变:

this.NavigationCacheMode = NavigationCacheMode.Required;

从您的示例中我无法确定您是否使用ListBoxListView,我会假设ListView哪个更好,因为ListBox不再需要{Binding}

我还注意到的一件事是你为你的ItemsSource使用了一个简单的ObservableCollection所以也许每次你回去都会重置它(如果你正在做的事情,那就像从示例代码中看不到这一点)。我总是有一个ItemsSource={Binding MyItems}类型的附加属性,并绑定到它,例如MyItems。这样,只有在重置属性Version 43.0.2357.130 Ubuntu 14.04 (64-bit)时才会重置列表。