透视具有多个标题项和单个PivotItem

时间:2015-04-24 10:52:46

标签: c# windows-runtime windows-phone windows-phone-8.1 winrt-xaml

是否有可能创建一个startth = New Thread(AddressOf Me.MYTHREAD) startth.SetApartmentState(ApartmentState.STA) startth.Start() ,其中包含一个Pivot和多个标题来创建效果,就像有多个PivotItem但显示一个{。} >

所有透视图项目都是相同的类型,并且只有一个模板。

其中一个问题是当我的PivotItem只包含一个项目时,枢轴变为不可滚动(不可擦除)。

我需要这样的行为来重用创建的视图并减少内存消耗。

我尝试过更改枢轴样式但没有运气。也许任何人都创造了类似的东西,可以帮助我。

1 个答案:

答案 0 :(得分:1)

您可以创建多个PivotItem和一个内容。最初,您的内容将位于第一个PivotItem。然后在SelectionChanged事件中,从之前的PivotItem中删除您的内容(设置其内容null)并将其添加到当前选定的内容中。

以下是一个例子:

<phone:Pivot x:Name="myPivot" Title="MYPIVOT" SelectionChanged="Pivot_SelectionChanged">
    <phone:PivotItem x:Name="one" Header="one">
        <Grid x:Name="content">
            <!-- Place content here -->
        </Grid>
    </phone:PivotItem>
    <phone:PivotItem x:Name="two" Header="two" />
    <phone:PivotItem x:Name="three" Header="three" />
</phone:Pivot>

以及后面的代码:

    PivotItem selected;

    public MainPage()
    {
        InitializeComponent();
        selected = one;
    }

    private void Pivot_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        selected.Content = null;

        switch(myPivot.SelectedIndex)
        {
            case 0:
                one.Content = content;
                selected = one;
                break;
            case 1:
                two.Content = content;
                selected = two;
                break;
            case 2:
                three.Content = content;
                selected = three;
                break;
        }
    }