Le UserControl
Je suis en train de travailler avec est essentiellement aménagé comme ceci:WPF Grid et DataGrid dimensionnement
<Grid>
<Grid.RowDefinitions>
<Row Height="*"/>
<Row Height="*"/>
</Grid.RowDefinitions>
<wpftoolkit:DataGrid x:Name="PrimaryGrid"/> <!-- ~10 rows -->
<Border>
<Grid>
<Grid.RowDefinitions>
<Row Height="*"/>
<Row Height="*"/>
</Grid.RowDefinitions>
<wpftoolkit:DataGrid x:Name="SecondaryGrid"/> <!-- ~2 rows -->
<wpftoolkit:DataGrid x:Name="OtherGrid"/> <!-- ~50 rows -->
</Grid>
</Border>
</Grid>
Cette UserControl
est ensuite placé dans mon Window
comme le dernier membre d'un Grid
, le seul avec Height="*"
. J'ai des problèmes avec la taille des DataGrid
s.
Si je mets VerticalAlignment
du UserControl
-Stretch
dans le Window
, puis PrimaryGrid
obtient 1/2 hauteur du UserControl
, et chacun des deux à l'intérieur du Border
obtenir 1/4. Ils sont dimensionnés comme ceci quel que soit le nombre de lignes, laissant OtherGrid
avec trop peu d'espace vertical et les autres avec des espaces non-lignes dans le scrollview.
Si je mets VerticalAlignment
-Top
, les grilles semblent assez bien la taille de leur contenu, sauf qu'il est un des espaces inexplicable étant laissé au fond du UserControl
. J'ai utilisé Snoop et le RowDefinition
pour le UserControl
a le bon ActualHeight
, mais le UserControl
en utilise seulement une partie - environ 80%.
Cela ne me dérange pas vraiment si je fixe le cas Stretch
(Comment puis-je le DataGrid
pas étirer plus grand que le nombre de lignes?) Ou le cas Top
(Comment puis-je faire l'UserControl
utiliser tout l'espace qu'il a ? dont il dispose)
Je vais tenter le coup, mais la dernière fois que j'ai essayé Auto, OtherGrid étendu au bas de la fenêtre, sans barre de défilement. – Thomas
Oui, tout auto est définitivement mauvais. Création des deux grilles Auto, * fonctionne un peu, jusqu'à ce que la taille de la fenêtre soit réduite. Ensuite, PrimaryGrid ne rétrécit pas et la bordure disparaît progressivement. Je pourrais peut-être leur donner une maxheight liée à une proportion de la hauteur réelle. Mais cela semble tellement inutile. Je pense que je veux lier MaxHeight du DataGrid à son ScrollableHeight, mais cela ne semble pas fonctionner. – Thomas
Comme alternative: Qu'en est-il de l'utilisation de Auto et de mettre l'ensemble UserControl dans un 'ScrollViewer'? De cette façon, chaque DataGrid devrait obtenir l'espace dont il a besoin, et une barre de défilement (globale) peut être utilisée pour faire défiler. – Heinzi