在 UWP 中使用 Pivot 的 SelectedIndex 属性

rav*_*mar 5 c# xaml uwp

我有一个页面,其中只有一个支点。该页面始终被缓存。现在,每当我导航到此页面时,我都希望从缓存中加载其内容和选择,但我希望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>
Run Code Online (Sandbox Code Playgroud)

这是我背后的代码:

public FilterPage()
{
    this.InitializeComponent();
    this.NavigationCacheMode = NavigationCacheMode.Required;
}

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    FilterPivot.SelectedIndex = 0;
}
Run Code Online (Sandbox Code Playgroud)

这不会选择第 0 个索引,而是显示PivotItem当用户离开视图时选择的缓存。

Jus*_* XL 5

OnNavigatedTo将被调用之前Pivot甚至被加载控制,所以设置SelectedIndex不会影响其选择。

简单的解决方法是订阅Loaded事件并从那里设置它。

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

FilterPivot.Loaded += (s, e) => FilterPivot.SelectedIndex = 0;
Run Code Online (Sandbox Code Playgroud)

  • *设置 SelectedIndex 不会影响其选择* - 听起来像一个错误 (2认同)