Vaibhav
Vaibhav

Reputation: 359

Not able to to make panorama item visible in code behind in wp8

I have 3 panorama items defined in xaml. I am setting visibility=collapsed for 2nd and 3rd panorama item .

In code behind I am setting visibility=Visible for 2nd and 3rd panorama item after certain condition occured. When I debug code,I see visibility=Visible is executed but then also these 2 items are in collapsed state only.What may be the reason?

        <phone:PanoramaItem Header="enterprise" Visibility="Collapsed"

                            HeaderTemplate="{StaticResource PanoramaItemHeaderTemplate}"
                            Name="enterpriseApps">
            <Grid Margin="16,0,0,0">
                <!--<StackPanel>-->
                <Grid.RowDefinitions>
                    <RowDefinition Height="auto"/>
                    <RowDefinition Height="*"/>
                </Grid.RowDefinitions>
                <!--<Button x:Name="btnUpdate" Click="btnUpdateAll_Click" Content="Update Apps"
                        FontSize="30" HorizontalAlignment="Left" Visibility="Collapsed"
                        Grid.Row="0" Margin="-10 -10 0 0"/>-->
                    <ListBox x:Name="EnterpriseApplist" Grid.Row="1"
                                ItemsSource="{Binding EnterpriseAppList}"
                                ItemTemplate="{StaticResource AvailableAppDataTemplate}" 
                                SelectionChanged="InstalledCompanyAppList_SelectionChanged"/>
                <TextBlock Name="txtEnterpriseapps" Visibility="Collapsed" Grid.Row="1"/>
            </Grid>
        </phone:PanoramaItem>

        <phone:PanoramaItem Header="uat" Visibility="Collapsed"
                            HeaderTemplate="{StaticResource PanoramaItemHeaderTemplate}"
                            Name="uatApps">
            <Grid Margin="16,0,0,0">
                <!--<StackPanel>-->
                    <ListBox x:Name="UATAppList" 
                                ItemsSource="{Binding UATAppList}"
                                ItemTemplate="{StaticResource AvailableAppDataTemplate}" 
                                SelectionChanged="InstalledCompanyAppList_SelectionChanged">

                    </ListBox>
                    <TextBlock Name="txtUatapps" Visibility="Collapsed"/>
                <!--</StackPanel>-->
            </Grid>
        </phone:PanoramaItem>

        <phone:PanoramaItem Header="demo" Name="demoApps"
                            HeaderTemplate="{StaticResource PanoramaItemHeaderTemplate}">
            <Grid Margin="16,0,0,0">
                <!--<StackPanel>-->
                <ListBox x:Name="DemoAppList"  Visibility="Collapsed"
                                ItemsSource="{Binding DemoAppList}"
                                ItemTemplate="{StaticResource AvailableAppDataTemplate}" 
                                SelectionChanged="InstalledCompanyAppList_SelectionChanged"/>
                <TextBlock Name="txtDemoapps" Visibility="Collapsed"/>
                <!--</StackPanel>-->
            </Grid>
        </phone:PanoramaItem>


    </phone:Panorama>

In code behind, I am writing as

if (App.ViewModel.EnterpriseAppList.Count == 0)
        {
            enterpriseApps.Visibility = Visibility.Visible;

        if (App.ViewModel.UATAppList.Count == 0)
        {
            uatApps.Visibility = Visibility.Visible;
                        }

        if (App.ViewModel.DemoAppList.Count == 0)
        {
           demoApps.Visibility = Visibility.Visible;
                        }

Upvotes: 0

Views: 280

Answers (1)

Chris Shao
Chris Shao

Reputation: 8231

The Panorama measured it's size and arrange when control Initialize. You can change your method like this(the name of Panorama is panorama):

    if (App.ViewModel.EnterpriseAppList.Count == 0)
    {
        int index1 = panorama.Items.IndexOf(enterpriseApps);
        panorama.Items.RemoveAt(index1);
        panorama.Items.Insert(index1, enterpriseApps);
        enterpriseApps.Visibility = Visibility.Visible;

        if (App.ViewModel.UATAppList.Count == 0)
        {
            int index2 = panorama.Items.IndexOf(uatApps);
            panorama.Items.RemoveAt(index2);
            panorama.Items.Insert(index2, uatApps);
            uatApps.Visibility = Visibility.Visible;
        }

        if (App.ViewModel.DemoAppList.Count == 0)
        {
            int index3 = panorama.Items.IndexOf(demoApps);
            panorama.Items.RemoveAt(index3);
            panorama.Items.Insert(index3, demoApps);
           demoApps.Visibility = Visibility.Visible;
        }
   }    

Upvotes: 1

Related Questions