2009-06-23 15 views
12

W 630 x 400 Okno, jestem ładowanie tam XAML elementów:Jak uzyskać UserControl, aby rozciągnąć, aby wypełnić przydzielone miejsce?

  • menu w górnej
  • sterowania dynamiczny użytkownik
  • stopce na dole

Problem polega na tym, że kiedy Ustawiam tło UserControl, , a tylko kolor obniża się do zawartości. Chcę, aby tło UserControl objęło oczywiście cały UserControl. Próbowałem:

  • VerticalContentAlignment = "Stretch" w UserControl
  • VerticalAlignment = "Stretch" w UserControl
  • VerticalContentAlignment = "Stretch" w MainView
  • V erticalAlignment = "Stretch" w MAINVIEW

Ale kolor nadal odmawia zejść. Nie chcę ustawiać stałej szerokości, ponieważ użytkownik może zwiększyć rozmiar aplikacji.

Jak mogę uzyskać kolor tła Moje UserControl, aby wypełnić cały obszar UserControl zamiast tylko obszaru jego zawartości?

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> 

Odpowiedz

12

Czy próbowałeś ...

  1. Ustawienie Margin = "0"
  2. Dokonywanie kontroli ostatnim dzieckiem DockPanel z LastChildFill = "True"
+2

Ok, to było bardzo miłe. Nie miałem zamiaru wypróbować twojej sugestii, ponieważ myślałem "ale nie chcę, aby moja kontrola treści była ostatnim dzieckiem, ale drugim dzieckiem". I tak spróbowałem i to działa. Powodem jest to, że "ostatnie dziecko" w DockPanel nie jest dzieckiem "najdalej w dół", ale dziecko "ostatnio wymienione w XAML". Bardzo dobrze wiedzieć. –

+0

Kiedy to zrobię, formant wypełnia tak, ale nakłada się na mój pasek stanu –

Powiązane problemy