Connaitre la dimension d'une listbox incluse dans une grille dont la dim est * (

Résolu
farrakis Messages postés 32 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 12 mai 2013 - 25 avril 2012 à 21:10
farrakis Messages postés 32 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 12 mai 2013 - 25 avril 2012 à 22:18
Bonjour

J'ai dans une fentre WPF, le code XAML suivant :

       
        <Grid.RowDefinitions>
            <RowDefinition Height="50"></RowDefinition>
            <RowDefinition Height="*"></RowDefinition>
            <RowDefinition Height="20"></RowDefinition>
        </Grid.RowDefinitions>

        <ListBox Name="maFenetreDessin"
            Grid.Column="1" Grid.Row="1"
        </ListBox>


J'ai besoin de connaitre la hauteur de ma listbox.

Quand je tente un
maFenetreDessin.Height
dans le code behind, j'obtiens NaN.

Comment obtenir la hauteur de ma listbox (par code behind ou binding WPF)

Merci de votre aide...

4 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
25 avril 2012 à 22:06
Bonjour,

Je ne maitrise pas WPF, mais je pense que si tu nommes le composant Grid, et que tu accèdes aux propriétés de ses lignes, je pense que tu aura 'information.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 avril 2012 à 21:18
Bonjour,
J'ai des difficultés à comprendre.
Pour moi : la hauteur d'une listbox n'est que celle qu'on a donné, graphiquement, à ce contrôle. Elle ne révèle rien d'autre que cela et je ne vois pas trop à quoi te servirait de connaître la hauteur ainsi définie.
Si tu tiens absolument à la connaître, je ne vois rien d'autre qu'une capture d'écran, puis de mesurer la hauteur de son image !.
A quoi diable te sert-il de savoir quelles dimensions graphiques ont été données à ce contrôle ?


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
farrakis Messages postés 32 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 12 mai 2013
25 avril 2012 à 21:45
Alors justement, ce n'est pas moi qui donne la hauteur à la listbox, mais WPF qui la gère de façon à remplir la fenêtre principale.

La raison pour laquelle je veux récupérer cette dimension est exposée ci-dessous.

Je veux binder dans ma listbox une collection d'objets (jusque là, rien d'exceptionnel). Sauf que ces objets ne seront pas présentés sous forme d'une liste, mais sous forme graphique, leur position dans la listbox étant définie par leur propriété X et Y.

Voila le code XAML complet décrivant la listbox


        <ListBox Name="maFenetreDessin"
            Grid.Column="1" Grid.Row="1" Margin="0,2,0,2"
            IsSynchronizedWithCurrentItem="True" 
            ItemsSource="{Binding}">

            <ListBox.ItemsPanel>
                
                    <Canvas Name="myCanvas"/>
                
            </ListBox.ItemsPanel>

            <ListBox.ItemTemplate>
                <DataTemplate>
                    
                </DataTemplate>
            </ListBox.ItemTemplate>

            <ListBox.ItemContainerStyle>
                <Style>
                    <Style.Setters>
                        <Setter Property="Canvas.Left" Value="{Binding Path=X}"/>
                        <Setter Property="Canvas.Top" Value="{Binding Path=Y}"/>
                    </Style.Setters>
                </Style>
            </ListBox.ItemContainerStyle>
        </ListBox>



Jusque là ça marche parfaitement, mais j'ai besoin de connaitre la dimension de la listbox pour pouvoir faire une mise à l'échelle de mes objets..

Voila, en espérant avoir été plus clair
0
farrakis Messages postés 32 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 12 mai 2013
25 avril 2012 à 22:18
effectivement,

un simple
Grid.RowDefinitions(1).ActualHeight
dans le code behind et j ai la dimension voulue...

il est temps que je parte en vacances moi !

merci pour la réponse :)
0
Rejoignez-nous