我有一个包含很多项目的列表框,点击时每个项目转到一个新页面,我想要的是当我从第二页返回时,点击该项目的相同位置!
这就是我的名单!
<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>
谢谢!
答案 0 :(得分:1)
如果您使用的是WinRT,您可以在页面构造函数中编写以下代码来缓存它,这样,在您返回此页面后,这些位置将保持不变:
this.NavigationCacheMode = NavigationCacheMode.Required;
从您的示例中我无法确定您是否使用ListBox
或ListView
,我会假设ListView
哪个更好,因为ListBox
不再需要{Binding}
我还注意到的一件事是你为你的ItemsSource
使用了一个简单的ObservableCollection
所以也许每次你回去都会重置它(如果你正在做的事情,那就像从示例代码中看不到这一点)。我总是有一个ItemsSource={Binding MyItems}
类型的附加属性,并绑定到它,例如MyItems
。这样,只有在重置属性Version 43.0.2357.130 Ubuntu 14.04 (64-bit)
时才会重置列表。