locked
Width / Height = "*" impossible RRS feed

  • Question

  • Bonjour,

    Étant débutant en développement WP8.1, mon problème est le suivant :

    Lorsque je veux définir un ScrollViewer adapté à la taille de l'écran de l'utilisateur je tape :

    <ScrollViewer HorizontalScrollMode="Disabled" Height="*" >

    mais j'ai une erreur : '*' string cannot be converted to Length

    Le but étant d'avoir une appli adaptable à toutes les résolutions. Je me suis dit que cette "*" disponible sous WP7.5 avait peut-être été supprimée, mais en cherchant toute la soirée (il est maintenant 3h du mat ...) je n'ai rien trouvé que j'aie réussi à utiliser.

    Merci d'avance,

    Atanakar.

    Edit : précision, mon ScrollViewer contenant un StackPanel je suis obligé de définir une hauteur car sinon le paramètre Auto lui en attribue une bien supérieure à la hauteur de l'écran et le défilement est alors impossible.



    • Modifié Atanakar dimanche 12 octobre 2014 01:28
    dimanche 12 octobre 2014 00:46

Réponses

  • Mettez votre grid et le ScrollViewer dedans. Sinon vous n'y arriverez jamais.

    La grid utilise tout l'espace et le scrollviewer aura la bonne dimension.


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    • Marqué comme réponse Atanakar lundi 13 octobre 2014 20:18
    lundi 13 octobre 2014 17:48

Toutes les réponses

  • Bonjour,

    Vous confondez avec les Grid (type GridLength). Il faut plutôt mettre :

    <ScrollViewer HorizontalScrollMode="Disabled" VerticalAlignment="Stretch" >


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    dimanche 12 octobre 2014 07:05
  • Merci de votre réponse,

    Comme je l'ai précisé si je ne définis pas la hauteur du ScrollViewer, le mode "Auto" alors activé lui donne la hauteur du contenu. Dans le cas présent j'obtiens une hauteur d'environ 1200 pixels, mon ScrollViewer dépasse donc du téléphone et ne "défile" pas lorsque je glisse le doigt dessus.

    VerticalAlignment définit seulement la position du ScrollViewer, cela ne définit en rien sa hauteur qui dépasse toujours largement la hauteur de mon téléphone (je ne vous parle pas de la théorie de la propriété VerticalAlignment mais ce qui se passe en pratique sur mon téléphone).

    Cordialement,

    Atanakar.

    PS : Le code :

    <StackPanel>
            <TextBlock Text="Choisissez un Cube à résoudre !" HorizontalAlignment="Left" Margin="5,0,0,0" Style="{StaticResource Titre1}" />
            <ScrollViewer HorizontalScrollMode="Disabled" VerticalAlignment="Stretch" >
                <StackPanel>
                    <Button Margin="10,10,10,10">
                        <StackPanel Orientation="Horizontal" Height="100">
                            <Image Source="/Assets/Images/RubiksCouleur.png" Width="85" Height="85" />
                            <TextBlock Text="Le Rubik's Cube Classic : 3x3x3" VerticalAlignment="Center" Margin="10,10,10,10"/>
                        </StackPanel>
                    </Button>
                    <Button Margin="10,10,10,10">
                        <StackPanel Orientation="Horizontal" Height="100">
                            <Image Source="/Assets/Images/RubiksCouleur.png" Width="85" Height="85" />
                            <TextBlock Text="Le Rubik's Cube Classic : 3x3x3" VerticalAlignment="Center" Margin="10,10,10,10"/>
                        </StackPanel>
                    </Button>
                    <Button Margin="10,10,10,10">
                        <StackPanel Orientation="Horizontal" Height="100">
                            <Image Source="/Assets/Images/RubiksCouleur.png" Width="85" Height="85" />
                            <TextBlock Text="Le Rubik's Cube Classic : 3x3x3" VerticalAlignment="Center" Margin="10,10,10,10"/>
                        </StackPanel>
                    </Button>
                    <TextBlock Text="Les Cubes à venir : " HorizontalAlignment="Left" Margin="10,10,10,0" Style="{StaticResource Titre1}" />
                    <Button Margin="10,10,10,10">
                        <StackPanel Orientation="Horizontal" Height="100">
                            <Image Source="/Assets/Images/RubiksCouleur.png" Width="85" Height="85" />
                            <TextBlock Text="Le Rubik's Cube Classic : 3x3x3" VerticalAlignment="Center" Margin="10,10,10,10"/>
                        </StackPanel>
                    </Button>
                    <Button Margin="10,10,10,10">
                        <StackPanel Orientation="Horizontal" Height="100">
                            <Image Source="/Assets/Images/RubiksCouleur.png" Width="85" Height="85" />
                            <TextBlock Text="Le Rubik's Cube Classic : 3x3x3" VerticalAlignment="Center" Margin="10,10,10,10"/>
                        </StackPanel>
                    </Button>
                    <Button Margin="10,10,10,10">
                        <StackPanel Orientation="Horizontal" Height="100">
                            <Image Source="/Assets/Images/RubiksCouleur.png" Width="85" Height="85" />
                            <TextBlock Text="Le Rubik's Cube Classic : 3x3x3" VerticalAlignment="Center" Margin="10,10,10,10"/>
                        </StackPanel>
                    </Button>
                </StackPanel>
            </ScrollViewer>
        </StackPanel>
    • Modifié Atanakar dimanche 12 octobre 2014 20:09 Ajout Code
    dimanche 12 octobre 2014 20:04
  • Ben oui, il est dans un StackPanel, donc il prend la hauteur qu'il veut !

    Remplacez le StackPanel par une Grid


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    lundi 13 octobre 2014 05:48
  • Bonjour,

    Merci de m'accorder du temps, cependant le problème reste entier avec une Grid : la taille totale de la Grid étant trop grande, je la mets dans un ScrollViewer afin de pouvoir la faire défiler. Mon but est que le ScrollViewer n'ait pas une taille fixe mais une taille dépendant de la définition de l’écran de l'utilisateur. Par exemple, si je mets comme taille au ScrollViewer "500", cela fonctionne, mais si je ne lui mets pas de taille, il passe en Auto et est beaucoup trop grand pour rentrer dans le téléphone.

    lundi 13 octobre 2014 16:15
  • Mettez votre grid et le ScrollViewer dedans. Sinon vous n'y arriverez jamais.

    La grid utilise tout l'espace et le scrollviewer aura la bonne dimension.


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    • Marqué comme réponse Atanakar lundi 13 octobre 2014 20:18
    lundi 13 octobre 2014 17:48
  • Merci bien, c'est la bonne solution, et maintenant que je la connais je comprends pourquoi !

    Encore merci du temps consacré !

    Bonne continuation,

    Atanakar.

    PS : Rapidement, comment faire pour que mes boutons occupent le maximum de l'espace disponible horizontalement ? (pour l'instant si je reduis la taille du texte ou de l'image, la taille du bouton est réduite). De manière "portable" encore une fois, svp. J'ai trouvé HorizontalAlignment="Stretch" pour le bouton, mais cela me centre son contenu (même en faisant HorizontalAlignment="Left" pour le contenu).


    • Modifié Atanakar lundi 13 octobre 2014 20:48
    lundi 13 octobre 2014 20:18