2009-06-23 50 views
12

Trong một cửa sổ 630 x 400, tôi tải các yếu tố có XAML:Làm thế nào để có được một UserControl để kéo dài để lấp đầy không gian alloted?

  • menu ở trên
  • điều khiển người dùng năng động
  • chân ở dưới cùng

Vấn đề là khi Tôi thiết lập nền của UserControl, màu chỉ đi xuống xa như nội dung. Tôi muốn nền của UserControl để trang trải toàn bộ UserControl tất nhiên. Tôi đã thử:

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

Nhưng màu sắc vẫn từ chối để đi xuống. Tôi không muốn đặt chiều rộng cố định vì người dùng có thể tăng kích thước của ứng dụng.

Làm cách nào để có được màu nền của UserControl để lấp đầy toàn bộ diện tích của UserControl thay vì chỉ có diện tích nội dung của nó?

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> 

Trả lời

12

Bạn đã cố gắng ...

  1. Setting Margin = "0"
  2. Làm kiểm soát của bạn trẻ cuối cùng của DockPanel với LastChildFill = "True"
+2

Ok, đó là rất tốt đẹp. Tôi thậm chí còn không thử đề nghị của bạn bởi vì tôi nghĩ "nhưng tôi không muốn kiểm soát nội dung của tôi là đứa trẻ cuối cùng, nhưng đứa con thứ hai đến cuối cùng". Tôi đã thử nó anyway và nó hoạt động. Lý do là "đứa con cuối cùng" của một DockPanel không phải là đứa trẻ "xa nhất về phía dưới" nhưng đứa trẻ "cuối cùng được liệt kê trong XAML". Rất tốt để biết. –

+0

Khi tôi thực hiện điều khiển, hãy điền vào có nhưng chồng chéo thanh trạng thái của tôi –

Các vấn đề liên quan