Reputation: 359
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
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