Search code examples
c#xamlwindows-phone-8pivotitem

How to Hide Visibility of Individual PivotItem


I have a few pivot items in my page, and based upon whether the app is in trial mode or not I need to show or hide one of the PivotItems. Setting the Visibility of the PivotItem directly in XAML or in C# only hides what is within the PivotItem, not the actual PivotItem itself. How can I accomplish this?

In testing I've tried both of the following

Page.xaml

<phone:PivotItem x:Name="PivotItem2" Visibility="Collapsed"
                         Header="2">
                ...
</<phone:PivotItem>

OR

Page.xaml.cs

 protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);

        //Check trial state and set PivotItem
        if ((Application.Current as App).IsTrial)
        {
            PivotItem2.Visibility = Visibility.Collapsed;
        }
        else
        {
            PivotItem2.Visibility = Visibility.Visible;
        }
    }

Solution

  • You can only remove or add PivotItems dynamically in your Pivot using Pivot.Items collection. You can not hide them. As per your requirement, you can do this :

    //Check trial state and set PivotItem
    if ((Application.Current as App).IsTrial)
    {
        PivotControl.Items.Remove(PivotControl.Items.Single(p => ((PivotItem)p).Name == "Name_PivotItem"));
    }
    else
    {
        PivotControl.Items.Add(PivotControl.Items.Single(p => ((PivotItem)p).Name == "Name_PivotItem"));
    }