2009-06-23 8 views
12

Dans un 630 x 400 fenêtre, je suis chargement des éléments il XAML:Comment obtenir un UserControl à étirer pour remplir l'espace alloué?

    Menu
  • en haut
  • contrôle utilisateur dynamique
  • pied au fond

Le problème est que lorsque Je définis l'arrière-plan de l'UserControl, la couleur descend seulement jusqu'au contenu. Je veux que l'arrière-plan de UserControl couvre bien l'UserControl bien sûr. J'ai essayé:

  • VerticalContentAlignment = "Stretch" dans le UserControl
  • VerticalAlignment = "Stretch" dans le UserControl
  • VerticalContentAlignment = "Stretch" dans la MainView
  • V erticalAlignment = "Stretch" dans le MainView

Mais la couleur refuse toujours de descendre. Je ne veux pas définir une largeur fixe puisque l'utilisateur est capable d'augmenter la taille de l'application.

Comment puis-je obtenir la couleur de fond de mon UserControl pour remplir toute la surface du UserControl au lieu de seulement la zone de son contenu?

PageItemOptionsView.xaml:

<UserControl x:Class="TestMenu234.Views.PageItemOptionsView" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      VerticalContentAlignment="Stretch" 
      VerticalAlignment="Stretch" 
      Background="#ddd"> 
    <StackPanel Margin="10"> 
     <TextBlock Text="This is the options area."/> 
     <Button Content="Click to go to the Manage Customers page." 
        Width="200"/> 
    </StackPanel> 
</UserControl> 

MainView.xaml:

<Window x:Class="TestMenu234.Views.MainView" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:c="clr-namespace:TestMenu234.Commands" 
    xmlns:vm="clr-namespace:TestMenu234.ViewModels" 
    xmlns:v="clr-namespace:TestMenu234.Views" 
    Title="Main Window" Height="400" Width="630" MinWidth="630"> 

...

<DockPanel LastChildFill="False"> 

     <Menu DockPanel.Dock="Top"> 
      <MenuItem 
       Header="Pages" ItemsSource="{Binding AllPageItemViewModels}" 
         ItemTemplate="{StaticResource CodeGenerationMenuTemplate}"/> 
     </Menu> 

     <ContentControl 
      DockPanel.Dock="Top" 
      VerticalAlignment="Stretch" 
      VerticalContentAlignment="Stretch" 
      Content="{Binding CurrentPageItemViewModel}"/> 

     <Border DockPanel.Dock="Bottom" Padding="5 5 5 0" Background="#eee"> 
      <Grid Background="#eee"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="*" MinWidth="300"/> 
        <ColumnDefinition Width="200"/> 
        <ColumnDefinition Width="100"/> 
       </Grid.ColumnDefinitions> 
       <Slider 
       Grid.Column="0" 
       HorizontalAlignment="Left" 
       Value="{Binding CurrentPageItemViewModelIndex}" 
       Width="300" 
       Minimum="0" 
       Maximum="{Binding HighestPageItemIndex}"/> 

       <TextBlock Grid.Column="1" 
          HorizontalAlignment="Center" FontWeight="Bold" 
          Text="{Binding CurrentPageItemViewModelTitle}"/> 

       <DockPanel Grid.Column="2" Margin="0 0 0 5" LastChildFill="False"> 
        <Button 
        Margin="3 0 0 0" 
        DockPanel.Dock="Right" 
       HorizontalAlignment="Right" 
       Content="Next" Command="{Binding NextPageCommand}"/> 
        <Button 
        DockPanel.Dock="Right" 
       Content="Prev" Command="{Binding PreviousPageCommand}"/> 
       </DockPanel> 
      </Grid> 
     </Border> 

    </DockPanel> 
</Window> 

Répondre

12

Avez-vous essayé ...

  1. Réglage Marge = "0"
  2. Faire votre contrôle le dernier enfant de DockPanel avec LastChildFill = "true"
+2

Ok, qui était très agréable. Je n'allais même pas essayer votre suggestion parce que je pensais "mais je ne veux pas que mon contrôle du contenu soit le dernier enfant, mais l'avant dernier enfant". Je l'ai essayé quand même et ça marche. La raison en est que le «dernier enfant» d'un DockPanel n'est pas l'enfant «le plus éloigné vers le bas» mais l'enfant «listé en dernier dans le XAML». Très bon à savoir. –

+0

Lorsque je fais cela, le contrôle remplit oui mais chevauche ma barre d'état –

Questions connexes