none
Texte cliquable, comment ? RRS feed

  • Question

  • Bonjour, vous allez vraiment me prendre pour un noob mais bon, c'est le cas lol, faut bien passer par là un jour...

    J'aimerais pouvoir créer du contenu cliquable... je sais c'est tout con mais si je crée un textblock l'évènement Click se déclenche même si on fait un glisser de doigts, si je crée un Button, visuellement parlant ça ressemble pas à ce que je souhaite.

    En gros je souhaiterais pouvoir afficher du texte comme pour l'appli de LeMonde.fr par exemple, quand on slide sur la news "A la une" on passe à la page d'après, sans que ça clique sur cette news A la une.

    Merci d'avance pour votre patience :)

    dimanche 24 juillet 2011 21:17

Réponses

  • Bonjour,

     

    Je viens de regarder à quoi ressemblait l'application sur Winphone pour pouvoir vous répondre.

    Je crois qu'il utilise un contrôle de type Pivot avec une ListBox.

      <!--LayoutRoot is the root grid where all page content is placed-->
      <Grid x:Name="LayoutRoot" Background="Transparent">
        <!--Pivot Control-->
        <controls:Pivot Title="MY APPLICATION">
          <!--Pivot item one-->
          <controls:PivotItem Header="first">
            <!--Double line list with text wrapping-->
            <ListBox x:Name="FirstListBox" Margin="0,0,-12,0" ItemsSource="{Binding Items}">
              <ListBox.ItemTemplate>
                <DataTemplate>
                 <StackPanel Margin="0,0,0,17" Width="432">
                   <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:PivotItem>
     
          <!--Pivot item two-->
          <controls:PivotItem Header="second"> 
            <!--Triple line list no text wrapping-->
              <ListBox x:Name="SecondListBox" Margin="0,0,-12,0" ItemsSource="{Binding Items}">
                <ListBox.ItemTemplate>
                  <DataTemplate>
                    <StackPanel Margin="0,0,0,17">
                      <TextBlock Text="{Binding LineOne}" TextWrapping="NoWrap" Margin="12,0,0,0" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
                      <TextBlock Text="{Binding LineThree}" TextWrapping="NoWrap" Margin="12,-6,0,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
                    </StackPanel>
                  </DataTemplate>
                </ListBox.ItemTemplate>
              </ListBox>
          </controls:PivotItem>
        </controls:Pivot>
      </Grid>
    

     


    Cordialement, Pascal.

    Développeur Wpf/SilverLight/WinPhone7

    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue.
    • Marqué comme réponse Neo33ASM lundi 25 juillet 2011 09:23
    lundi 25 juillet 2011 06:41
  • Oui c'est le selection_changed sur la Listbox.

    Ou alors un des évènement qui gère le tactile comme :

    SecondListBox.ManipulationCompleted += new EventHandler<ManipulationCompletedEventArgs>(SecondListBox_ManipulationCompleted);
    
    SecondListBox.ManipulationStarted += new EventHandler<ManipulationStartedEventArgs>(SecondListBox_ManipulationStarted);
        
    

    Bien que je pense que c'est plus par le selctionChanged du ListBox.

     


    Cordialement, Pascal.

    Développeur Wpf/SilverLight/WinPhone7

    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue.
    • Marqué comme réponse Neo33ASM lundi 25 juillet 2011 09:22
    lundi 25 juillet 2011 09:16
  •  private void ListTheme_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
        {
          if (e.AddedItems.Count == 0)
            return;
    
    //ton traitement
    
    
    
    ListBox.SelectedItem=0;  //on enleve la selection
    
        }
    



    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue
    • Marqué comme réponse Neo33ASM lundi 25 juillet 2011 09:51
    lundi 25 juillet 2011 09:46
    Modérateur
  • Bonjour,

     

    Je pense qu'il à voulu saisir le code suivant :

    ListBox.SelectedItem=null; 
    


    Cordialement, Pascal.

    Développeur Wpf/SilverLight/WinPhone7

    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue.
    • Marqué comme réponse Neo33ASM lundi 25 juillet 2011 11:42
    lundi 25 juillet 2011 11:22

Toutes les réponses

  • Bonjour,

     

    Je viens de regarder à quoi ressemblait l'application sur Winphone pour pouvoir vous répondre.

    Je crois qu'il utilise un contrôle de type Pivot avec une ListBox.

      <!--LayoutRoot is the root grid where all page content is placed-->
      <Grid x:Name="LayoutRoot" Background="Transparent">
        <!--Pivot Control-->
        <controls:Pivot Title="MY APPLICATION">
          <!--Pivot item one-->
          <controls:PivotItem Header="first">
            <!--Double line list with text wrapping-->
            <ListBox x:Name="FirstListBox" Margin="0,0,-12,0" ItemsSource="{Binding Items}">
              <ListBox.ItemTemplate>
                <DataTemplate>
                 <StackPanel Margin="0,0,0,17" Width="432">
                   <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:PivotItem>
     
          <!--Pivot item two-->
          <controls:PivotItem Header="second"> 
            <!--Triple line list no text wrapping-->
              <ListBox x:Name="SecondListBox" Margin="0,0,-12,0" ItemsSource="{Binding Items}">
                <ListBox.ItemTemplate>
                  <DataTemplate>
                    <StackPanel Margin="0,0,0,17">
                      <TextBlock Text="{Binding LineOne}" TextWrapping="NoWrap" Margin="12,0,0,0" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
                      <TextBlock Text="{Binding LineThree}" TextWrapping="NoWrap" Margin="12,-6,0,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
                    </StackPanel>
                  </DataTemplate>
                </ListBox.ItemTemplate>
              </ListBox>
          </controls:PivotItem>
        </controls:Pivot>
      </Grid>
    

     


    Cordialement, Pascal.

    Développeur Wpf/SilverLight/WinPhone7

    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue.
    • Marqué comme réponse Neo33ASM lundi 25 juillet 2011 09:23
    lundi 25 juillet 2011 06:41
  • Ok merci pour la partie affichage, et dans ce cas là l'évènement à utiliser pour le fait de pouvoir "cliquer" un de ces textes serait donc "Selection_Changed" ?
    lundi 25 juillet 2011 08:54
  • Oui c'est le selection_changed sur la Listbox.

    Ou alors un des évènement qui gère le tactile comme :

    SecondListBox.ManipulationCompleted += new EventHandler<ManipulationCompletedEventArgs>(SecondListBox_ManipulationCompleted);
    
    SecondListBox.ManipulationStarted += new EventHandler<ManipulationStartedEventArgs>(SecondListBox_ManipulationStarted);
        
    

    Bien que je pense que c'est plus par le selctionChanged du ListBox.

     


    Cordialement, Pascal.

    Développeur Wpf/SilverLight/WinPhone7

    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue.
    • Marqué comme réponse Neo33ASM lundi 25 juillet 2011 09:22
    lundi 25 juillet 2011 09:16
  • Oui je le trouve assez pratique, mais maintenant je saurais que la famille "manipulation..." est spécifique au tactile, j'vais les tester voir ce que ça fait.

    Par contre j'avais fait un test avec le Selection_Changed, qui faisait afficher un MessageBox, mais une fois qu'on fermait celui-ci, le texte cliqué était "sélectionné", et impossible de re-cliquer dessus :S  (j'avais mis 1 seul item, donc impossible de le dé-sélectionner).

    Comment palier à ce souci ?

    lundi 25 juillet 2011 09:27
  •  private void ListTheme_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
        {
          if (e.AddedItems.Count == 0)
            return;
    
    //ton traitement
    
    
    
    ListBox.SelectedItem=0;  //on enleve la selection
    
        }
    



    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue
    • Marqué comme réponse Neo33ASM lundi 25 juillet 2011 09:51
    lundi 25 juillet 2011 09:46
    Modérateur
  • J'ai donc changé pour tester, mais après avoir cliqué sur "Ok" dans mon MessageBox, la sélection reste sur "présentation" :S

    Voilà ce que j'ai mis.

     

         <ListBox x:Name="menu3" SelectionChanged="Menu3_SelectionChanged">
          <TextBlock FontSize="{StaticResource PhoneFontSizeExtraLarge}">présentation</TextBlock>
         </ListBox>

      private void Menu3_SelectionChanged(object sender, SelectionChangedEventArgs e)
      {
       if (e.AddedItems.Count == 0)
        return;
    
       MessageBox.Show("Présentation");
       menu3.SelectedItem = 0;
      }
    


     


    lundi 25 juillet 2011 11:08
  • Bonjour,

     

    Je pense qu'il à voulu saisir le code suivant :

    ListBox.SelectedItem=null; 
    


    Cordialement, Pascal.

    Développeur Wpf/SilverLight/WinPhone7

    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue.
    • Marqué comme réponse Neo33ASM lundi 25 juillet 2011 11:42
    lundi 25 juillet 2011 11:22
  • Super ça fonctionne nickel, merci beaucoup :)
    lundi 25 juillet 2011 11:43