2009-06-23 10 views
12

in una finestra di 630 x 400, che sto caricando elementi ci XAML:Come ottenere un controllo utente da allungare per riempire lo spazio assegnato?

  • menù in alto
  • controllo utente dinamica
  • piè di pagina in fondo

Il problema è che quando Ho impostato lo sfondo di UserControl, , il colore scende solo fino al contenuto. Voglio lo sfondo di UserControl per coprire l'intero UserControl, ovviamente. Ho provato:

  • VerticalContentAlignment = "Stretch" nel UserControl
  • VerticalAlignment = "Stretch" nel UserControl
  • VerticalContentAlignment = "Stretch" nel MainView
  • V erticalAlignment = "Stretch" nel MainView

Ma il colore rifiuta ancora di scendere. Non voglio impostare una larghezza fissa poiché l'utente è in grado di aumentare la dimensione dell'applicazione.

Come posso ottenere il colore di sfondo del mio UserControl per riempire l'intera area di UserControl anziché solo l'area del suo contenuto?

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> 

risposta

12

Hai provato ...

  1. impostazione Margine = "0"
  2. Rendere il vostro controllo l'ultimo figlio di DockPanel con LastChildFill = "True"
+2

Ok, che è stato molto bello. Non avevo intenzione di provare il tuo suggerimento perché pensavo "ma non voglio che il mio controllo dei contenuti sia l'ultimo figlio, ma il penultimo figlio". L'ho provato lo stesso e funziona. La ragione è che "l'ultimo figlio" di un DockPanel non è il bambino "più lontano verso il basso", ma il bambino "ultimo elencato nello XAML". Molto buono a sapersi. –

+0

Quando lo faccio il controllo si riempie sì ma si sovrappone alla mia barra di stato –

Problemi correlati