我有一个页面,其中只有一个枢轴。此页面是始终缓存的。现在,每当导航到该页面时,我都希望从缓存中加载其内容和选择,但是我想查看第一个PivotItem
XAML:

<Pivot x:Name="FilterPivot"
        IsHeaderItemsCarouselEnabled="True"
        SelectedIndex="0">

    <PivotItem Header="Author" >

        <ListBox ItemsSource="{x:Bind AuthorFacets, Mode=OneWay}"
                    Name="AuthorListBox"
                    SelectionMode="Multiple"
                    SelectionChanged="AuthorListBox_SelectionChanged">

            <ListBox.ItemContainerStyle>
                <Style TargetType="ListBoxItem">
                    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
                </Style>
            </ListBox.ItemContainerStyle>


            <ListBox.ItemTemplate>
                <DataTemplate x:DataType="local:IFacet">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*"></ColumnDefinition>
                            <ColumnDefinition Width="Auto"></ColumnDefinition>
                        </Grid.ColumnDefinitions>

                        <TextBlock Grid.Column="0"
                                        Text="{x:Bind read}"
                                        TextWrapping="Wrap"
                                        HorizontalAlignment="Left"
                                        VerticalAlignment="Center"/>

                        <Border Grid.Column="1"
                                    Background="Gray"
                                    MinWidth="25"
                                    CornerRadius="8">
                            <TextBlock Text="{x:Bind num}"
                                            HorizontalAlignment="Center"
                                            VerticalAlignment="Center"
                                            Padding="2"/>
                        </Border>

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

    </PivotItem>


    <PivotItem Header="Language">

        ....
        ....

    </PivotItem>

    <PivotItem Header="Learning Resource Type">

        ....
        ....

    </PivotItem>



    <PivotItem Header="Subject">

        ....
        ....

    </PivotItem>

    <PivotItem Header="Type">

        ....
        ....

    </PivotItem>

    <PivotItem Header="Education Level">

        ....
        ....

    </PivotItem>

    <PivotItem Header="Source">

        ....
        ....

    </PivotItem>

</Pivot>

这是我的代码背后:
public FilterPage()
{
    this.InitializeComponent();
    this.NavigationCacheMode = NavigationCacheMode.Required;
}

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    FilterPivot.SelectedIndex = 0;
}

它不会选择第0个索引,而是显示在用户离开 View 时选择的缓存PivotItem

最佳答案

在加载OnNavigatedTo控件之前,将先调用,然后再加载Pivot控件,因此设置SelectedIndex不会影响其选择。

一种简单的解决方法是订阅Loaded事件,然后从那里进行设置。

只需在MainPage的构造函数中执行以下操作-

FilterPivot.Loaded += (s, e) => FilterPivot.SelectedIndex = 0;

10-07 16:48