2012-09-12 1 views
1

laisse supposer que je grille avec 3 colonnes:automatique et *

1st column requires minimum height of 100 to display its content 
2nd column requires minimum height of 200 to display its content 
3rd column requires minimum height of 300 to display its content 

Hauteur totale requise est 600. Si l'espace disponible est de 900 pixels, puis 300 pixels supplémentaires doivent être répartis de façon égale entre les colonnes, de sorte que le résultat final est:

1st column height = 200 
2nd column height = 300 
3rd column height = 400 

si j'utilise * pour réglage de la hauteur, le résultat final est chaque colonne 300 pixels, ce qui est pas ce que je veux. Fondamentalement, j'ai besoin d'une combinaison de auto et *. Cela peut-il être fait en xaml?

+2

ce que sur le réglage Largeur « Auto » et la mise en MinWidth à 100200, et 300? –

+0

hauteur de la colonne? ou avez-vous voulu dire la largeur? –

+0

hauteur, oui. Désolé pour la faute de frappe –

Répondre

1

Essayez ceci:

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" 
     Height="800" 
     Width="525"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="*" 
          MinHeight="100" /> 
      <RowDefinition Height="*" 
          MinHeight="200" /> 
      <RowDefinition Height="*" 
          MinHeight="300" /> 
     </Grid.RowDefinitions> 
     <TextBlock Background="LightBlue" 
        Text="{Binding ActualHeight, Mode=OneWay, RelativeSource={RelativeSource Self}}" /> 
     <TextBlock Grid.Row="1" 
        Background="LightCyan" 
        Text="{Binding ActualHeight, Mode=OneWay, RelativeSource={RelativeSource Self}}" /> 
     <TextBlock Grid.Row="2" 
        Background="LightCoral" 
        Text="{Binding ActualHeight, Mode=OneWay, RelativeSource={RelativeSource Self}}" /> 
    </Grid> 
</Window> 

Vous verrez que les hauteurs sont au moins 100, 200, 300, mais dès qu'il y a assez de place, la place supplémentaire sera également distribuée aux rangées.

+0

Le problème est que je ne sais pas quelle est la hauteur minimum requise pour afficher le contenu. Cela pourrait être différent pour une langue différente. C'est pourquoi j'ai dit que j'ai besoin d'une combinaison de Auto (qui assignera la hauteur juste assez pour afficher le contenu) et * (pour distribuer également l'espace libre entre toutes les colonnes). – Goran

0

1er col height = 2 *

2ème hauteur col = 3 *

3ème col height = 4 *

+0

Cela ne sera pas également distribuer le lieu. –

Questions connexes