2017-10-17 6 views
0

J'ai une grille de données imbriquée sur mon écran. Elle ne prend pas tout l'espace de ma fenêtre. J'ai défini la hauteur et la largeur des données. Mon problème est quand la taille du DataGrid est la même sur toutes les résolutions d'écran. Comment puis-je faire pour ajuster en fonction d'une résolution? Puis-je faire cela en quelque sorte avec MinWidth et MaxWidth? ou quelque chose comme ça? Si j'utilise SizeToContent, il ne maximise pas la fenêtre.redimensionner la grille de données en fonction d'une résolution d'écran

Voici comment la fenêtre devrait This is how the window should look Ceci est la définition XAML pour la grille et table principale:

<Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto" MinHeight="30"/> 
      <RowDefinition Height="Auto" /> 
      <RowDefinition Height="Auto" /> 
      <RowDefinition Height="Auto" /> 
      <RowDefinition Height="Auto" /> 
      <RowDefinition /> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="209*" /> 
     </Grid.ColumnDefinitions> 
    <DataGrid Name="tabela" Grid.Row="1" Width="1100" Height="700" HorizontalAlignment="Center" IsReadOnly="True" AlternatingRowBackground="#eeeeee" ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.HorizontalScrollBarVisibility="Auto" ItemsSource="{Binding}" AutoGenerateColumns="False" RowDetailsVisibilityChanged="tabela_RowDetailsVisibilityChanged" SelectionChanged="tabela_SelectionChanged" > 

Répondre

1

Essayez ceci:

<Grid> 
    <DataGrid Name="tabela" 
       HorizontalAlignment="Stretch" 
       VerticalAlignment="Stretch" 
       IsReadOnly="True" 
       AlternatingRowBackground="#eeeeee" 
       ItemsSource="{Binding}" 
       AutoGenerateColumns="False" 
       RowDetailsVisibilityChanged="tabela_RowDetailsVisibilityChanged" 
       SelectionChanged="tabela_SelectionChanged" > 
    </DataGrid> 
</Grid> 

Si vous voulez que vos commandes pour redimensionner selon à leur taille parente (dans ce cas, c'est votre fenêtre), vous ne pouvez pas définir Width et Height du tout. Vous pouvez jouer avec MinWidth, MinHeight, MaxWidth et MaxHeight si vous voulez, mais dans la plupart des cas, les contrôles s'étirent juste pour prendre tout l'espace disponible. Il est défini par HorizontalAlignment="Stretch" et VerticalAlignment="Stretch" (dans la plupart des cas, ce sont des valeurs par défaut, mais je les ai définies explicitement au cas où vous l'auriez remplacé ailleurs).

Une autre chose est si vous configurez un Grid avec ColumnDefinitions et RowDefinitions, ne le faites pas si vous ne l'utilisez pas. Juste Grid est suffisant pour être un conteneur pour un seul contrôle tel que DataGrid. Si vous ne définissez Rows et Columns, vous pouvez définir leur Width et Height à l'un des trois types de valeurs:

  • valeur exacte (par exemple 100)
  • Auto - Rows ou Columns redimensionnera pour prendre autant d'espace comme leur contenu
  • * - il s'agit d'une proportion de marquage, donc la définition de la largeur de l'étoile à une colonne alors que vous en avez trois, fera de cette colonne pour prendre tout l'espace disponible. D'autre part, si vous avez deux colonnes et que vous réglez Width="*" sur la première et Width="2*" sur la seconde, tout l'espace disponible sera divisé en 3 parties et la première colonne en recevra 1/3 et la seconde 2/3 (vous pouvez jouer avec ce que vous voulez).