Bonjour à tous,
J'ai vu plusieurs sujets sur le forum qui traitaient du problème mais j'ai pas réussi à résoudre le miens à l'aide des réponses. Je me permet donc de venir grossir le nombre de sujet avec mes petites histoires.
Voilà l'idée général :
Je créer un arbre de décision d'après une base de donnée dans un canvas.
Il y a plusieurs modèle possible donc le tout dois être dynamique.
L'utilisateur choisit le modèle puis le canvas se remplit des objets et ils sont positionnés sur le canvas qui "grandit" en fonction.
Le problème arrive donc au moment ou les objet sortent de l'espace alloué au canvas.
Du coup j'essaie de faire un truc comme ça, en me disant que le border encapsulera le canvas qui lui fournira une taille qui du coup permettra au ScrollViewer de déterminer si oui ou non il appliquera les ascenseurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <Grid x:Name="LayoutRoot"> <Grid.ColumnDefinitions> <ColumnDefinition x:Name="Menu" Width="Auto" /> <ColumnDefinition x:Name="Contenu" Width="*" /> </Grid.ColumnDefinitions> //[...] Bout de code qui concerne la partie Menu de la grid <ScrollViewer x:Name="rootScroll" Grid.Column="1" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"> <Border x:Name="rootBorder"> <Canvas x:Name="rootCanvas"/> </Border> </ScrollViewer> </Grid>
Mais au moment de l'initialisation, si j'ai bien compris, la taille est nulle donc pas de barre.
Alors dans le Code Behind après avoir remplit mon canvas j'ai essayé de faire ça :
Mais sans effet étant donné que je ne vois pas comment faire comprendre au ScrollViewer qu'il y a eu du changement et qu'il doit éventuellement créer des barres
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 rootCanvas.Width = rootCanvas.ActualWidth; rootCanvas.Height = rootCanvas.ActualHeight; rootBorder.Height = rootCanvas.Height; rootBorder.Width = rootCanvas.Width;
Est ce que je fais fausse route ? Est ce que les tailles des objets encapsulés sont elles bien prise en compte ? Y a une solution à mon problème sans imposer une taille fixe au canvas ?
Merci
Valorn
Partager