locked
Escondendo e exibindo Panorama Item RRS feed

  • Pergunta

  • Está acontecendo algo muito estranho e que não vejo sentido.

    A main page do app é um panorama com 6 panorama items. Destes, 4 podem ser exibidos ou não, de acordo com as configurações do app.

    Para identificar se o painel será exibido ou não, criei um boleano para cada painel na isolated storage que são gravados de cordo com os switches do painel de configuração do app.

    No LOAD da main page, é feita a leitura da isolated storage e, de acordo com os valores dos boleanos, cada panorama item é exibida ou não através da propriedade Visibility.

    Funciona perfeitamente, exceto quando tentamos exibir o quarto panorama item (independente de qual seja, 1o, 2o, 3o ou 4o), ou seja, quando "ligo" todos os painéis. Mas se entrar em qualquer outra tela e voltar para a main page, fazendo com que o load seja disparado novamente, os painéis aparecem corretamente.

    Vou colocar aqui os trechos de código por desencargo de consciência, mas é tão simples que não consigo ver onde possa estar ocorrendo o problema. Só espero que eu esteja errando algo e que não seja um bug do componente.

    Partindo de qualquer situação (1, 2, 3 ou 4) para a situação 5, o(s) painel(s) que falta ser exibidos não aparecem após voltar para a main page (o load é disparado normalmente e executa a chamada que vou postar abaixo).

            private void AtualizarPaineis()
            {
                IsolatedStorageSettings iso = IsolatedStorageSettings.ApplicationSettings;
    
                Boolean booPainelAtividade;
                Boolean booPainelDedicacao;
                Boolean booPainelBiblioteca;
                Boolean booPainelAnotacao;
    
                // Recupera estado do painel de atividade
                if (!iso.TryGetValue<Boolean>("isoSetupPainelAtividade", out booPainelAtividade))
                {
                    booPainelAtividade = true;
                }
    
                // Recupera estado do painel de dedicação
                if (!iso.TryGetValue<Boolean>("isoSetupPainelDedicacao", out booPainelDedicacao))
                {
                    booPainelDedicacao = true;
                }
    
                // Recupera estado do painel de biblioteca
                if (!iso.TryGetValue<Boolean>("isoSetupPainelBiblioteca", out booPainelBiblioteca))
                {
                    booPainelBiblioteca = true;
                }
    
                // Recupera estado do painel de anotação
                if (!iso.TryGetValue<Boolean>("isoSetupPainelAnotacao", out booPainelAnotacao))
                {
                    booPainelAnotacao = true;
                }
    
    
                // Altera exibição dos painés de acordo com as configurações
                if (booPainelAtividade)
                {
                    this.panitemAtividades.Visibility = System.Windows.Visibility.Visible;
                }
                else
                {
                    this.panitemAtividades.Visibility = System.Windows.Visibility.Collapsed;
                }
    
                if (booPainelDedicacao)
                {
                    this.panitemHorasEstudo.Visibility = System.Windows.Visibility.Visible;
                }
                else
                {
                    this.panitemHorasEstudo.Visibility = System.Windows.Visibility.Collapsed;
                }
    
                if (booPainelBiblioteca)
                {
                    this.panitemLinks.Visibility = System.Windows.Visibility.Visible;
                }
                else
                {
                    this.panitemLinks.Visibility = System.Windows.Visibility.Collapsed;
                }
    
                if (booPainelAnotacao)
                {
                    this.panitemAnotacoes.Visibility = System.Windows.Visibility.Visible;
                }
                else
                {
                    this.panitemAnotacoes.Visibility = System.Windows.Visibility.Collapsed;
                }
            }
    

    Não há nenhum erro nos nomes da isolated porque ao forçar um novo LOAD, os painéis (panorama items) aparecem normalmente.

    Alguma sugestão?

    Obrigado.


    Andrey Kurka (MCC) | Federal Case | @federalcaseinfo

    quinta-feira, 10 de janeiro de 2013 14:43

Respostas

  • Pessoal,

    Para ajudar, reproduzi o problema que o Andrey mostrou acima e consegui resolver com o comando postado pelo Rodo.

    Os panoramas estavam sendo exibidos incorretamente, mas após a adição da linha: this.seuPanorama.DefaultItem = seuPanorama.DefaultItem os mesmos aparecem na tela de forma correta.

    Agora vai.. 

    []´s!


    Thiago Grandesso

    sexta-feira, 11 de janeiro de 2013 13:11
  • Desculpa Andrey, vamos la, dei uma boa lida no tópico e no que postara, agora faz mais sentido para mim. O problema pode não estar no ISO então, pois o que mencionam é que o panorama está se perdendo, mas todos os itens funcionam, dependendo de como fazem o update, certo?

    faz o seguinte, tenta duas coisa aqui para vermos, pois o panorama pode não estar obtendo o que está pedindo, trabalhando dessa forma que está.

    tenta duas coisas no seu método AtualizarPaines, adiciona na última linha

    this.PANORAMA(naoitems, ok?).defaultitem = PANORAMA.defaultitem

    ou tenta tb um updatelayout caso a coisa não dê certo.


    agora, por ultimo, gostaria de tentar ver se não há como reduzir o numero de items, o motivo do guideline é performance, pode realmente deteriorar e vejo com maus olhos fazendo 6 scrolls até chegar na primeira tela novamente. quem sabe colocar o seu primeiro item, menu, na app bar?
    enfim, apenas ideias, a hora agora é de resolver o problema né..veja se ajuda. vou tentar tb pegar sue código e reproduzir aqui.


    Rodolpho Marques do Carmo Microsoft MVP - Windows Phone Development @rodocarmo http://www.conexaowindows.com http://www.rodolphomarques.com http://www.windowsphonebrasil.net

    sexta-feira, 11 de janeiro de 2013 12:58

Todas as Respostas

  • O problema me parece que ocorre quando você tenta pegar os valores das booleanas...

    Para mim existe modos mais faceis de pega-los, como:

    Declarar as bools no MainViewModel, e na função Checked ou Unchecked ele setará o valor para a determinada bool,

    ai para chamar no MainPage basta: if (App.ViewModel.booPainelBlibioteca)

    @@ Não, engano meu... 
    testei por esse jeito e deu o mesmo resultado!

    Vou analizar o porque disso, se achar algo posto aqui..

    quinta-feira, 10 de janeiro de 2013 15:18
  • Então Thiago, tenho feito muitos apps desta maneira e nunca tive este tipo de problema. A isolated storage sempre funcionou bem. Me certifiquei em examinar a leitura da isolated storage e está trazendo corretamente os valores. Os IFs estão entrando no lugar certo e passando pelo Visibility, mas não acata a mudança somente quando tento ligar o último painel, conforme as figuras. Foi difícil explicar, mas o mais difícil está sendo entender o motivo deste problema. Por isso até cogitei um bug no componente Panorama.

    Obrigado pela força... vou continuar procurando.


    Andrey Kurka (MCC) | Federal Case | @federalcaseinfo

    quinta-feira, 10 de janeiro de 2013 23:40
  • Duas coisas, Andrey.

    Primeiro, cuidado com panoramas muito longos. dá uma olhada nos best practices.

    http://msdn.microsoft.com/en-us/library/ff941107

    Eu, pessoalmente, acredito que panorama com cinco itens já é longo demais e gera uma certa distração, o usuário fica perdido com tanto scroll para os lados.

    No seu problema, com seis itens, penso que o problema pode estar no xaml, algo pode estar ficando escondido, alguma largura poderia estar escondendo um item atrás do outro. pode postar esse código?


    Rodolpho Marques do Carmo Microsoft MVP - Windows Phone Development @rodocarmo http://www.conexaowindows.com http://www.rodolphomarques.com http://www.windowsphonebrasil.net

    sexta-feira, 11 de janeiro de 2013 11:12
  • Não Andrey, me precipitei quando disse que podia ser a chamada, eu realmente nunca tive erro para esconder ou exibir um panorama escondido, até o momento..

    Rodolpho, tenho o que eu criei pra testar aqui se interessar...

    <phone:PhoneApplicationPage 
        x:Class="PanoramaApp1.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
        xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
        xmlns:controls="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
        mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="728" 
        d:DataContext="{d:DesignData SampleData/MainViewModelSampleData.xaml}"
        FontFamily="{StaticResource PhoneFontFamilyNormal}"
        FontSize="{StaticResource PhoneFontSizeNormal}"
        Foreground="{StaticResource PhoneForegroundBrush}"
        SupportedOrientations="Portrait"  Orientation="Portrait"
        shell:SystemTray.IsVisible="False">
    
        <!--LayoutRoot is the root grid where all page content is placed-->
        <Grid x:Name="LayoutRoot" Background="Transparent">
     
            <!--Panorama control-->
            <controls:Panorama Title="my application">
                <controls:Panorama.Background>
                    <ImageBrush ImageSource="PanoramaBackground.png"/>
                </controls:Panorama.Background>
     
                
                <controls:PanoramaItem Name="PanEX1" Header="1">
                    
                    <ListBox Margin="0,0,-12,0" ItemsSource="{Binding Items}">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <StackPanel Margin="0,0,0,17" Width="432" Height="78">
                                    <TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
                                    <TextBlock Text="{Binding LineTwo}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
                                </StackPanel>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>
                </controls:PanoramaItem>
     
                
              
                <controls:PanoramaItem Name="PanEX2" Header="2">
                    <!--Double line list with image placeholder and text wrapping-->
                    <ListBox Margin="0,0,-12,0" ItemsSource="{Binding Items}">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal" Margin="0,0,0,17">
                                    <!--Replace rectangle with image-->
                                    <Rectangle Height="100" Width="100" Fill="#FFE5001b" Margin="12,0,9,0"/>
                                    <StackPanel Width="311">                                    
                                        <TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
                                        <TextBlock Text="{Binding LineTwo}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
                                    </StackPanel>
                                </StackPanel>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>
                </controls:PanoramaItem>
                
                <controls:PanoramaItem Name="PanEX3" Header="3">
                    <!--Double line list with image placeholder and text wrapping-->
                    <ListBox Margin="0,0,-12,0" ItemsSource="{Binding Items}">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal" Margin="0,0,0,17">
                                    <!--Replace rectangle with image-->
                                    <Rectangle Height="100" Width="100" Fill="#FFE5001b" Margin="12,0,9,0"/>
                                    <StackPanel Width="311">
                                        <TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
                                        <TextBlock Text="{Binding LineTwo}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
                                    </StackPanel>
                                </StackPanel>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>
                </controls:PanoramaItem>
               
                <controls:PanoramaItem Name="PanEX4" Header="4">
                    <!--Double line list with image placeholder and text wrapping-->
                    <ListBox Margin="0,0,-12,0" ItemsSource="{Binding Items}">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal" Margin="0,0,0,17">
                                    <!--Replace rectangle with image-->
                                    <Rectangle Height="100" Width="100" Fill="#FFE5001b" Margin="12,0,9,0"/>
                                    <StackPanel Width="311">
                                        <TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
                                        <TextBlock Text="{Binding LineTwo}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
                                    </StackPanel>
                                </StackPanel>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>
                </controls:PanoramaItem>
                
                <controls:PanoramaItem Name="PanEX5" Header="5">
                    <!--Double line list with image placeholder and text wrapping-->
                    <ListBox Margin="0,0,-12,0" ItemsSource="{Binding Items}">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal" Margin="0,0,0,17">
                                    <!--Replace rectangle with image-->
                                    <Rectangle Height="100" Width="100" Fill="#FFE5001b" Margin="12,0,9,0"/>
                                    <StackPanel Width="311">
                                        <TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
                                        <TextBlock Text="{Binding LineTwo}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
                                    </StackPanel>
                                </StackPanel>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>
                </controls:PanoramaItem>
                
                <controls:PanoramaItem Name="PanEX6" Header="6">
                    <!--Double line list with image placeholder and text wrapping-->
                    <ListBox Margin="0,0,-12,0" ItemsSource="{Binding Items}">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal" Margin="0,0,0,17">
                                    <!--Replace rectangle with image-->
                                    <Rectangle Height="100" Width="100" Fill="#FFE5001b" Margin="12,0,9,0"/>
                                    <StackPanel Width="311">
                                        <TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
                                        <TextBlock Text="{Binding LineTwo}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
                                    </StackPanel>
                                </StackPanel>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>
               
                </controls:PanoramaItem>
    
            </controls:Panorama>
        
        </Grid>
        <phone:PhoneApplicationPage.ApplicationBar>
            <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
            <shell:ApplicationBar.Buttons>
    
            </shell:ApplicationBar.Buttons>
            <shell:ApplicationBar.MenuItems>
                <shell:ApplicationBarMenuItem x:Name="xxxxxxxxx" Click="settings_Click" Text="Menu Item X"/>
    
            </shell:ApplicationBar.MenuItems>
            </shell:ApplicationBar>
        </phone:PhoneApplicationPage.ApplicationBar>
    </phone:PhoneApplicationPage>

    sexta-feira, 11 de janeiro de 2013 11:36
  • Oi Rodo!

    Então, este é o primeiro app que utilizo um panorama acima de 4 itens e foi para atender um monte de solicitações que estou recebendo ainda. Fiz um modelo novo de integração com o usuário e deu certo demais. Estou muito contente mesmo com isso.

    Bom, não acredito que algo esteja ficando escondido porque se você faz qualquer coisa que dispare o MainPage_Loaded novamente, todos os items do Panorama aparecem normalmente. Fora a questão de distrção do usuário com um panorama grande, espero que não haja nenhuma limitação técnica para isso. Inclusive a questão de ligar e desligar os painéis foi para satisfazer o usuário que, eventualmente, não utilize algum deles. Segue abaixo o xaml:

    <phone:PhoneApplicationPage 
        x:Class="FingerOnStudies.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
        xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
        xmlns:controls="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
        mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="800" 
        d:DataContext="{d:DesignData SampleData/MainViewModelSampleData.xaml}"
        FontFamily="{StaticResource PhoneFontFamilyNormal}"
        FontSize="{StaticResource PhoneFontSizeNormal}"
        Foreground="White"
        SupportedOrientations="PortraitOrLandscape"  Orientation="Portrait"
        shell:SystemTray.IsVisible="False"
        xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
        xmlns:code4fun="clr-namespace:Coding4Fun.Phone.Controls;assembly=Coding4Fun.Phone.Controls" 
        xmlns:my="clr-namespace:Microsoft.Advertising.Mobile.UI;assembly=Microsoft.Advertising.Mobile.UI"
        >
    
        <!--LayoutRoot is the root grid where all page content is placed-->
        <Grid x:Name="LayoutRoot" Background="Transparent">
     
            <!--Panorama control-->
            <controls:Panorama Title="fingerOn Studies" Foreground="White">
                <controls:Panorama.Background>
                    <ImageBrush ImageSource="panorama-estudo.png" Stretch="None"/>
                </controls:Panorama.Background>
    
                <!--Panorama item RECURSOS-->
                <controls:PanoramaItem x:Name="panitemRecursos" Header="recursos">
                    <ScrollViewer Margin="0,-30,0,0">
                        <StackPanel>
                            <Button x:Name="btnMenuDisciplinas" Content="disciplinas" Foreground="White" BorderBrush="Transparent" HorizontalAlignment="Left" FontFamily="{StaticResource PhoneFontFamilySemiLight}" FontSize="32" Click="btnMenuDisciplinas_Click"></Button>
                            <Button x:Name="btnMenuAnotacoes" Content="anotações" Foreground="White"  BorderBrush="Transparent" HorizontalAlignment="Left" FontFamily="{StaticResource PhoneFontFamilySemiLight}" FontSize="32" Click="btnMenuAnotacoes_Click"></Button>
                            <Button x:Name="btnMenuLinks" Content="biblioteca" Foreground="White"  BorderBrush="Transparent" HorizontalAlignment="Left" FontFamily="{StaticResource PhoneFontFamilySemiLight}" FontSize="32" Click="btnMenuLinks_Click"></Button>
                            <Button x:Name="btnMenuHorarios" Content="grade de horários" Foreground="White"  BorderBrush="Transparent" HorizontalAlignment="Left" FontFamily="{StaticResource PhoneFontFamilySemiLight}" FontSize="32" Click="btnMenuHorarios_Click"></Button>
                            <Button x:Name="btnMenuAtividades" Content="atividades" Foreground="White" BorderBrush="Transparent" HorizontalAlignment="Left" FontFamily="{StaticResource PhoneFontFamilySemiLight}" FontSize="32" Click="btnMenuAtividades_Click"></Button>
                            <Button x:Name="btnMenuSetup" Content="configurações" Foreground="White" BorderBrush="Transparent" HorizontalAlignment="Left" FontFamily="{StaticResource PhoneFontFamilySemiLight}" FontSize="32" Click="btnMenuSetup_Click"></Button>
                            <Button x:Name="btnMenuSobre" Content="sobre" Foreground="White" BorderBrush="Transparent" HorizontalAlignment="Left" FontFamily="{StaticResource PhoneFontFamilySemiLight}" FontSize="32" Click="btnMenuSobre_Click"></Button>
                        </StackPanel>
                    </ScrollViewer>
                </controls:PanoramaItem>
    
                
                <!--Panorama item horários-->
                <controls:PanoramaItem x:Name="panitemGrade" Header="grade" Orientation="Horizontal" Width="auto">
                    <ScrollViewer>
                        <StackPanel Width="auto">
                            <Grid x:Name="grdMainGradeHorarios" 
                              ShowGridLines="False"
                              Width="auto">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="Auto"/>
                                </Grid.ColumnDefinitions>
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="Auto"/>
                                    <RowDefinition Height="Auto"/>
                                    <RowDefinition Height="Auto"/>
                                    <RowDefinition Height="Auto"/>
                                    <RowDefinition Height="Auto"/>
                                    <RowDefinition Height="Auto"/>
                                    <RowDefinition Height="Auto"/>
                                </Grid.RowDefinitions>
                            </Grid>
                        </StackPanel>
                    </ScrollViewer>
                </controls:PanoramaItem>
     
                <!--Panorama item Atividades-->
                <controls:PanoramaItem x:Name="panitemAtividades" Header="atividades">
                    <StackPanel Margin="0,-30,0,0">
                        <TextBlock x:Name="tblMainAtividadesDica" Text="Duplo toque para informar sua nota" Foreground="Gray" Style="{StaticResource PhoneTextSubtleStyle}" Margin="12,-10,0,0"></TextBlock>
                        <code4fun:InputPrompt x:Name="inputNota" Visibility="Collapsed" InputScope="Number" Title="Programação I" Message="Informe sua nota" HorizontalContentAlignment="Right" Completed="inputNota_Completed"></code4fun:InputPrompt>
                        <ListBox x:Name="lstMainAtividades" Margin="0,10,0,0" Height="490" Foreground="White" DoubleTap="lstMainAtividades_DoubleTap">
                            <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <StackPanel Orientation="Horizontal" Margin="0,5,0,0">
                                        <Rectangle Height="40" Width="5" Fill="{Binding atividadeCor}" VerticalAlignment="Center" Margin="0,-6,0,0" HorizontalAlignment="Left"/>
                                        <StackPanel Orientation="Horizontal" Background="Black" Opacity="0.7" Width="480">
                                            <StackPanel Margin="0,20,0,10" Width="330" Height="Auto">
                                                <TextBlock Text="{Binding atividadeDisciplina}" TextWrapping="NoWrap" Style="{StaticResource PhoneTextLargeStyle}"/>
                                                <TextBlock Text="{Binding atividadeTitulo}" TextWrapping="NoWrap" Margin="12,-6,12,0" Foreground="Gray" Style="{StaticResource PhoneTextSubtleStyle}"/>
                                                <TextBlock Text="{Binding atividadeDataEntrega}" TextWrapping="NoWrap" Margin="12,-6,12,0" Foreground="Gray" Style="{StaticResource PhoneTextSubtleStyle}"/>
                                            </StackPanel>
    
                                            <TextBlock x:Name="tblValorObtido" Text="{Binding atividadeValorObtido}" FontWeight="Light" FontSize="28" Foreground="{Binding atividadeCor}" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
                                        </StackPanel>
                                    </StackPanel>
                                </DataTemplate>
                            </ListBox.ItemTemplate>
                        </ListBox>
                    </StackPanel>
                </controls:PanoramaItem>
                
                <!--Panorama item Horas de Estudo-->
                <controls:PanoramaItem x:Name="panitemHorasEstudo" Header="dedicação">
                    <StackPanel Margin="0,-30,0,0">
                        <TextBlock x:Name="tblMainHorasEstudoDica" Text="Duplo toque inicia ou encerra estudos" Foreground="Gray" Style="{StaticResource PhoneTextSubtleStyle}" Margin="12,-10,0,0"></TextBlock>
                        
                        <!--<TextBlock x:Name="tblRelogio" FontWeight="Light" FontSize="28"></TextBlock>-->
                        
                        <ListBox x:Name="lstMainHorasEstudoDisciplinas" Margin="0,10,0,0" Height="490" Foreground="White" DoubleTap="lstMainHorasEstudoDisciplinas_DoubleTap">
                            <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <StackPanel Orientation="Horizontal" Margin="0,5,0,0">
                                        <Rectangle Height="100" Width="5" Fill="{Binding estudoCor}" VerticalAlignment="Center" Margin="0,-6,0,0" HorizontalAlignment="Left"/>
                                        <StackPanel Orientation="Horizontal" Background="Black" Opacity="0.7" Width="480">
                                            <StackPanel Margin="0,20,0,10" Width="450" Height="Auto">
                                                <TextBlock Text="{Binding estudoDisciplinaDescricao}" TextWrapping="NoWrap" Foreground="White" Style="{StaticResource PhoneTextLargeStyle}"/>
                                                
                                                <StackPanel Orientation="Horizontal">
                                                    <TextBlock Text="{Binding estudoHorasSemanaisCaption}" Margin="20,0,0,0"></TextBlock>
                                                    <TextBlock Text="{Binding estudoHorasSemanaisHora}" TextWrapping="NoWrap" Margin="10,-5,0,0" FontSize="28"/>
                                                    <TextBlock Text="{Binding estudoHoraCaption}" Foreground="Gray" Style="{StaticResource PhoneTextSubtleStyle}" Margin="0,0,0,0"></TextBlock>
                                                    <TextBlock Text="{Binding estudoHorasSemanaisMinuto}" TextWrapping="NoWrap" Margin="10,-5,0,0" FontSize="28"/>
                                                    <TextBlock Text="{Binding estudoMinutoCaption}" Foreground="Gray" Style="{StaticResource PhoneTextSubtleStyle}" Margin="0,0,0,0"></TextBlock>
                                                </StackPanel>
    
                                                <StackPanel Orientation="Horizontal">
                                                    <TextBlock Text="{Binding estudoHorasMensaisCaption}" Margin="20,0,0,0"></TextBlock>
                                                    <TextBlock Text="{Binding estudoHorasMensaisHora}" TextWrapping="NoWrap" Margin="10,-5,0,0" FontSize="28"/>
                                                    <TextBlock Text="{Binding estudoHoraCaption}" Foreground="Gray" Style="{StaticResource PhoneTextSubtleStyle}" Margin="0,0,0,0"></TextBlock>
                                                    <TextBlock Text="{Binding estudoHorasMensaisMinuto}" TextWrapping="NoWrap" Margin="10,-5,0,0" FontSize="28"/>
                                                    <TextBlock Text="{Binding estudoMinutoCaption}" Foreground="Gray" Style="{StaticResource PhoneTextSubtleStyle}" Margin="0,0,0,0"></TextBlock>
                                                </StackPanel>
    
                                                <StackPanel Orientation="Horizontal">
                                                    <TextBlock Text="{Binding estudoHorasTotaisCaption}" Margin="20,0,0,0"></TextBlock>
                                                    <TextBlock Text="{Binding estudoHorasTotaisHora}" TextWrapping="NoWrap" Margin="10,-5,0,0" FontSize="28"/>
                                                    <TextBlock Text="{Binding estudoHoraCaption}" Foreground="Gray" Style="{StaticResource PhoneTextSubtleStyle}" Margin="0,0,0,0"></TextBlock>
                                                    <TextBlock Text="{Binding estudoHorasTotaisMinuto}" TextWrapping="NoWrap" Margin="10,-5,0,0" FontSize="28"/>
                                                    <TextBlock Text="{Binding estudoMinutoCaption}" Foreground="Gray" Style="{StaticResource PhoneTextSubtleStyle}" Margin="0,0,0,0"></TextBlock>
                                                </StackPanel>
    
                                                <StackPanel Orientation="Horizontal">
                                                    <TextBlock Text="{Binding estudoHorasMediaCaption}" Margin="20,0,0,0"></TextBlock>
                                                    <TextBlock Text="{Binding estudoHorasMediaHora}" TextWrapping="NoWrap" Margin="10,-5,0,0" FontSize="28"/>
                                                    <TextBlock Text="{Binding estudoHoraCaption}" Foreground="Gray" Style="{StaticResource PhoneTextSubtleStyle}" Margin="0,0,0,0"></TextBlock>
                                                    <TextBlock Text="{Binding estudoHorasMediaMinuto}" TextWrapping="NoWrap" Margin="10,-5,0,0" FontSize="28"/>
                                                    <TextBlock Text="{Binding estudoMinutoCaption}" Foreground="Gray" Style="{StaticResource PhoneTextSubtleStyle}" Margin="0,0,0,0"></TextBlock>
                                                </StackPanel>
    
                                                <StackPanel Orientation="Horizontal">
                                                    <TextBlock Text="{Binding estudoHorasMelhorCaption}" Margin="20,0,0,0"></TextBlock>
                                                    <TextBlock Text="{Binding estudoHorasMelhorHora}" TextWrapping="NoWrap" Margin="10,-5,0,0" FontSize="28"/>
                                                    <TextBlock Text="{Binding estudoHoraCaption}" Foreground="Gray" Style="{StaticResource PhoneTextSubtleStyle}" Margin="0,0,0,0"></TextBlock>
                                                    <TextBlock Text="{Binding estudoHorasMelhorMinuto}" TextWrapping="NoWrap" Margin="10,-5,0,0" FontSize="28"/>
                                                    <TextBlock Text="{Binding estudoMinutoCaption}" Foreground="Gray" Style="{StaticResource PhoneTextSubtleStyle}" Margin="0,0,0,0"></TextBlock>
                                                </StackPanel>
    
                                                <StackPanel Orientation="Horizontal">
                                                    <TextBlock Text="{Binding estudoHorasUltimaCaption}" Margin="20,0,0,0"></TextBlock>
                                                    <TextBlock Text="{Binding estudoHorasUltimaHora}" TextWrapping="NoWrap" Margin="10,-5,0,0" FontSize="28"/>
                                                    <TextBlock Text="{Binding estudoHoraCaption}" Foreground="Gray" Style="{StaticResource PhoneTextSubtleStyle}" Margin="0,0,0,0"></TextBlock>
                                                    <TextBlock Text="{Binding estudoHorasUltimaMinuto}" TextWrapping="NoWrap" Margin="10,-5,0,0" FontSize="28"/>
                                                    <TextBlock Text="{Binding estudoMinutoCaption}" Foreground="Gray" Style="{StaticResource PhoneTextSubtleStyle}" Margin="0,0,0,0"></TextBlock>
                                                </StackPanel>
    
                                                <TextBlock Text="{Binding estudoMensagem}" Foreground="Gray" Style="{StaticResource PhoneTextSubtleStyle}" Margin="10,-5,0,0"></TextBlock>
    
                                            </StackPanel>
                                        </StackPanel>
                                    </StackPanel>
                                </DataTemplate>
                            </ListBox.ItemTemplate>
                        </ListBox>
                    </StackPanel>
                </controls:PanoramaItem>
    
                <!--Panorama item de Links (biblioteca)-->
                <controls:PanoramaItem x:Name="panitemLinks" Header="biblioteca">
                    <StackPanel Margin="0,-30,0,0">
                        <TextBlock x:Name="tblMainLinkDica" Text="Duplo toque exibe o conteúdo" Foreground="Gray" Style="{StaticResource PhoneTextSubtleStyle}" Margin="12,-10,0,0"></TextBlock>
    
                        <ListBox x:Name="lstMainLink" Margin="0,10,0,0" Height="490" Foreground="White" DoubleTap="lstMainLink_DoubleTap">
                            <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <StackPanel Orientation="Horizontal" Margin="0,0,0,10">
                                        <Rectangle Height="40" Width="5" Fill="{Binding linkDisciplinaCor}" VerticalAlignment="Center" Margin="0,-6,0,0" HorizontalAlignment="Left"/>
    
                                        <StackPanel Background="Black" Opacity="0.7" Width="460">
                                            <TextBlock Text="{Binding linkAssunto}" Margin="5,10,0,0"></TextBlock>
                                            <TextBlock Text="{Binding linkDisciplinaDescricao}" Margin="20,0,0,10" Foreground="{Binding linkDisciplinaCor}" Style="{StaticResource PhoneTextSubtleStyle}"></TextBlock>
                                            <!--<Line FlowDirection="LeftToRight" HorizontalAlignment="Left" Stroke="{Binding linkDisciplinaCor}" StrokeEndLineCap="Flat" StrokeStartLineCap="Triangle" StrokeThickness="1" X1="0" X2="350"></Line>-->
                                        </StackPanel>
                                    </StackPanel>
                                </DataTemplate>
                            </ListBox.ItemTemplate>
                        </ListBox>
                    </StackPanel>
                </controls:PanoramaItem>
                
                <!--Panorama item de Anotações-->
                <controls:PanoramaItem x:Name="panitemAnotacoes" Header="anotações">
                    <StackPanel Margin="0,-30,0,0">
                        <TextBlock x:Name="tblMainAnotacoesDica" Text="Duplo toque exibe o anotação" Foreground="Gray" Style="{StaticResource PhoneTextSubtleStyle}" Margin="12,-10,0,0"></TextBlock>
    
                        <ListBox x:Name="lstMainAnotacao" Margin="0,10,0,0" Height="490" Foreground="White" DoubleTap="lstMainAnotacao_DoubleTap">
                            <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <StackPanel Orientation="Horizontal" Margin="0,0,0,10">
                                        <Rectangle Height="40" Width="5" Fill="{Binding anotacaoDisciplinaCor}" VerticalAlignment="Center" Margin="0,-6,0,0" HorizontalAlignment="Left"/>
    
                                        <StackPanel Background="Black" Opacity="0.7" Width="460">
                                            <TextBlock Text="{Binding anotacaoTitulo}" Margin="5,10,0,0"></TextBlock>
                                            <TextBlock Text="{Binding anotacaoDisciplinaDescricao}" Margin="20,0,0,10" Foreground="{Binding anotacaoDisciplinaCor}" Style="{StaticResource PhoneTextSubtleStyle}"></TextBlock>
                                            <TextBlock Text="{Binding anotacaoDescricao}" Margin="10,0,60,0" Foreground="White" Style="{StaticResource PhoneTextSubtleStyle}" TextWrapping="Wrap"></TextBlock>
                                            <!--<Line FlowDirection="LeftToRight" HorizontalAlignment="Left" Stroke="{Binding anotacaoDisciplinaCor}" StrokeEndLineCap="Flat" StrokeStartLineCap="Triangle" StrokeThickness="1" X1="0" X2="350"></Line>-->
                                        </StackPanel>
                                    </StackPanel>
                                </DataTemplate>
                            </ListBox.ItemTemplate>
                        </ListBox>
                    </StackPanel>
                </controls:PanoramaItem>
    
            </controls:Panorama>
        </Grid>
    </phone:PhoneApplicationPage>


    Andrey Kurka (MCC) | Federal Case | @federalcaseinfo


    sexta-feira, 11 de janeiro de 2013 12:04
  • Thiago, você conseguiu reproduzir o problema?

    Andrey Kurka (MCC) | Federal Case | @federalcaseinfo

    sexta-feira, 11 de janeiro de 2013 12:11
  • Sim, com 3 ativados funciona normal, agora quando ativo o quarto ele comprime todos os 4 no espaço de 1..

    até carregar novamente os panoramasitens

    sexta-feira, 11 de janeiro de 2013 12:14
  • o código está ok e tem que funcionar. tanto xaml quanto a validação. a questão se resume a: quando é que você está salvando esses dados no ISO e quando está recuperando. talvez eles não tenham ainda sido salvos.
    certeza absoluta que se pegar esse código e tirar a parte do da validação do isolated, colocando valores forçados para os booleanos, esse panorama vai carregar corretamente.

    faça dois testes, um dando valores forçados para os bools na mainpage, outro dando valores forçados para eles na sua pagina de settings, e depois puxando no main page. aí você consegue isolar o problema e saber se é no isolated, etc...
     


    Rodolpho Marques do Carmo Microsoft MVP - Windows Phone Development @rodocarmo http://www.conexaowindows.com http://www.rodolphomarques.com http://www.windowsphonebrasil.net

    sexta-feira, 11 de janeiro de 2013 12:22
  • Aqui acontece diferente. Se eu ativar o quarto item, simplesmente não aparece.

    Se eu tiver 2 ativos e tentar ativar os outros 2 juntos, ficam aparecendo somente os 2 anteriores.

    Se eu tiver 1 ativo e tentar ativar os outros 3 juntos, fica aparecendo somente o que já estava.

    Mas em qualquer um dos casos, se eu entrar em qualquer outra tela e voltar ao MainPage, todos os items que pedi para ativar aparecerão normalmente. Por isso que dá a falsa sensação de que o MainPage_Loaded não consegue carregar mais do que 3 panorama items de uma só vez...


    Andrey Kurka (MCC) | Federal Case | @federalcaseinfo

    sexta-feira, 11 de janeiro de 2013 12:24
  • Rodolpho, o meu teste foi assim.. e deu o mesmo erro,

    Criei as bools no viewmodel e na função checked ou unchecked eu carregava as bools com true ou false.

    e pego os valores dessas bools no mainpage...

    Tive a mesma impressão andrey, mas nao achei nada a respeito a esse limite na pesquisa que fiz

    sexta-feira, 11 de janeiro de 2013 12:29
  • Só para desencargo de consciência, vou postar o código onde gravo cada um na iso...

    Em cada alteração do ToogleSwitch eu gravo a informação na iso e recupero no código que postei no começo (chamada no MainPage_Loaded), veja:

            private void swtSetupPainelAtividades_Click(object sender, RoutedEventArgs e)
            {
                IsolatedStorageSettings iso = IsolatedStorageSettings.ApplicationSettings;
                
                // Grava botão atividade
                if (iso.Contains("isoSetupPainelAtividade"))
                {
                    iso["isoSetupPainelAtividade"] = Convert.ToBoolean(this.swtSetupPainelAtividades.IsChecked);
                }
                else
                {
                    iso.Add("isoSetupPainelAtividade", Convert.ToBoolean(this.swtSetupPainelAtividades.IsChecked));
                }
    
                iso.Save();
            }
    
    
    
    
    
            private void swtSetupPainelDedicacao_Click(object sender, RoutedEventArgs e)
            {
                IsolatedStorageSettings iso = IsolatedStorageSettings.ApplicationSettings;
    
                // Grava botão dedicação
                if (iso.Contains("isoSetupPainelDedicacao"))
                {
                    iso["isoSetupPainelDedicacao"] = Convert.ToBoolean(this.swtSetupPainelDedicacao.IsChecked);
                }
                else
                {
                    iso.Add("isoSetupPainelDedicacao", Convert.ToBoolean(this.swtSetupPainelDedicacao.IsChecked));
                }
    
                iso.Save();
            }
    
    
    
    
    
            private void swtSetupPainelBiblioteca_Click(object sender, RoutedEventArgs e)
            {
                IsolatedStorageSettings iso = IsolatedStorageSettings.ApplicationSettings;
    
                // Grava botão biblioteca
                if (iso.Contains("isoSetupPainelBiblioteca"))
                {
                    iso["isoSetupPainelBiblioteca"] = Convert.ToBoolean(this.swtSetupPainelBiblioteca.IsChecked);
                }
                else
                {
                    iso.Add("isoSetupPainelBiblioteca", Convert.ToBoolean(this.swtSetupPainelBiblioteca.IsChecked));
                }
    
                iso.Save();
            }
    
    
    
    
    
            private void swtSetupPainelAnotacoes_Click(object sender, RoutedEventArgs e)
            {
                IsolatedStorageSettings iso = IsolatedStorageSettings.ApplicationSettings;
    
                // Grava botão anotação
                if (iso.Contains("isoSetupPainelAnotacao"))
                {
                    iso["isoSetupPainelAnotacao"] = Convert.ToBoolean(this.swtSetupPainelAnotacoes.IsChecked);
                }
                else
                {
                    iso.Add("isoSetupPainelAnotacao", Convert.ToBoolean(this.swtSetupPainelAnotacoes.IsChecked));
                }
    
                iso.Save();
            }
    


    Andrey Kurka (MCC) | Federal Case | @federalcaseinfo

    sexta-feira, 11 de janeiro de 2013 12:29
  • Desculpa Andrey, vamos la, dei uma boa lida no tópico e no que postara, agora faz mais sentido para mim. O problema pode não estar no ISO então, pois o que mencionam é que o panorama está se perdendo, mas todos os itens funcionam, dependendo de como fazem o update, certo?

    faz o seguinte, tenta duas coisa aqui para vermos, pois o panorama pode não estar obtendo o que está pedindo, trabalhando dessa forma que está.

    tenta duas coisas no seu método AtualizarPaines, adiciona na última linha

    this.PANORAMA(naoitems, ok?).defaultitem = PANORAMA.defaultitem

    ou tenta tb um updatelayout caso a coisa não dê certo.


    agora, por ultimo, gostaria de tentar ver se não há como reduzir o numero de items, o motivo do guideline é performance, pode realmente deteriorar e vejo com maus olhos fazendo 6 scrolls até chegar na primeira tela novamente. quem sabe colocar o seu primeiro item, menu, na app bar?
    enfim, apenas ideias, a hora agora é de resolver o problema né..veja se ajuda. vou tentar tb pegar sue código e reproduzir aqui.


    Rodolpho Marques do Carmo Microsoft MVP - Windows Phone Development @rodocarmo http://www.conexaowindows.com http://www.rodolphomarques.com http://www.windowsphonebrasil.net

    sexta-feira, 11 de janeiro de 2013 12:58
  • Pessoal,

    Para ajudar, reproduzi o problema que o Andrey mostrou acima e consegui resolver com o comando postado pelo Rodo.

    Os panoramas estavam sendo exibidos incorretamente, mas após a adição da linha: this.seuPanorama.DefaultItem = seuPanorama.DefaultItem os mesmos aparecem na tela de forma correta.

    Agora vai.. 

    []´s!


    Thiago Grandesso

    sexta-feira, 11 de janeiro de 2013 13:11
  • e só para complementar, não há o limite não, você pode trabalhar dessa forma, como falei, tenho certeza absoluta que esse código funcionaria forçando as variáveis diretamente (e depois li com calma que sim, vocês disseram que fazendo o reload no _loaded ele fica ok).

    Portanto o problema é mais no controle mesmo.

    Apenar documentando aqui para o pessoal que ler no futuro, o ideal nesses casos é realmente trabalhar com poucos itens, caso seja possível e não muito complexo tentar carregar dinamicamente usando os items.add , apesar da solução não se aplicar em alguns cenários, e procurar validar sempre o layout e como estão as  coisas na sua página. Digo, você sempre pode validar se o visibility está true or false, se o seu controle contém todos os items que quer, quais são as propriedades atuais de um botão, etc. Além de todas as ferramentas de debug, os watch e immediate da vida, um passo simples e efetivo para isolar o problema é sempre pensar em cada caso micro, em cada passo. isolated funcionou? é no controle?
    criar uma linha que use o controle, adicione um breakpoint, vá em cima do controle e analise suas propriedades, provavelmente vai achar o problema ou ao menos analisar a situação atual daquele controle. Sei que não é seu caso, Andrey, pois já vem trabalhando há tempos com a plataforma, mas acho que é um exemplo que torna válida essa explicação, pois muitos irão acessar essa thread no futuro e isso pode ajudar :)


    Rodolpho Marques do Carmo Microsoft MVP - Windows Phone Development @rodocarmo http://www.conexaowindows.com http://www.rodolphomarques.com http://www.windowsphonebrasil.net

    sexta-feira, 11 de janeiro de 2013 13:15
  • realmente então foi o visibility em tempo de execução . . Já tive problemas parecidos com items anteriormente, mas o jeito que o problema se manifestava era bem diferente, não imaginei que poderia ser isso de cara, achei que era algo com o isso e reaload do Panorama. Bom saber que funcionou!! Andrey, depois conta pra gente!

    Rodolpho Marques do Carmo Microsoft MVP - Windows Phone Development @rodocarmo http://www.conexaowindows.com http://www.rodolphomarques.com http://www.windowsphonebrasil.net

    sexta-feira, 11 de janeiro de 2013 13:18
  • Funcionou perfeitamente aqui tambem !
    sexta-feira, 11 de janeiro de 2013 13:27
  • Rodo, mais uma vez obrigado.

    O componente estava se perdendo mesmo. Colocando na última linha a definição do item default fez com que ele carregasse todos items normalmente.

    Abraço!


    Andrey Kurka (MCC) | Federal Case | @federalcaseinfo

    sexta-feira, 11 de janeiro de 2013 13:43