2009-02-13 18 views
5

Tôi đã có UserControl gốc cao 300. Bên trong đó tôi có một Border mà tôi muốn mở rộng đến kích thước của các điều khiển riêng của nó, vì vậy nếu tôi xếp chồng lên trong nhiều điều khiển hơn, nó sẽ mở rộng - ít điều khiển hơn, nó sẽ co lại.Làm cách nào để buộc hộp chứa Silverlight mở rộng/hợp đồng với kích thước của điều khiển con của nó?

Tuy nhiên khi tôi đặt nó là "Auto" nó mở rộng nó ra với kích thước của chứa mẹ thay vì kích thước của con của nó điều khiển.

Làm cách nào để có được Border mở rộng và hợp đồng với kích thước các điều khiển con của nó, giống như chức năng của bảng HTML?

<UserControl x:Class="Second105.Page" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:basics="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls" 
    Width="400" Height="300"> 
    <Grid x:Name="LayoutRoot" Background="White"> 
     <Border 
      Background="Tan" 
      CornerRadius="10" 
      Padding="10" 
      Width="300" 
      Height="Auto"> 
     <StackPanel> 
       <TextBlock HorizontalAlignment="Center" Margin="0 0 0 5">Please select a <Run FontStyle="Italic">week day</Run>:</TextBlock> 
      <basics:Calendar 
       Name="theCalendar" 
       SelectedDatesChanged="Calendar_SelectedDatesChanged"/> 
      <TextBlock 
       Name="theMessage" 
       Margin="0 10 0 0" 
       HorizontalAlignment="Center" 
       Text="..."/> 
     </StackPanel> 
     </Border> 
    </Grid> 
</UserControl> 
+0

+1 cho cả các câu hỏi và câu trả lời. Điều này đã khiến tôi hoàn toàn BONKERS trong một giờ qua vì lý do chính xác. Thay đổi từ một StackPanel thành Grid cho LayoutRoot cuối cùng đã cho phép lưới bên trong của tôi mở rộng đến kích thước gốc. OI VEY. –

Trả lời

6

Wrap nó trong một StackPanel nên làm điều đó:

<UserControl 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:basics="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="400" 
    Height="300"> 
    <Grid x:Name="LayoutRoot" Background="White"> 
     <StackPanel> 
     <Border 
      Width="300" 
      Height="Auto" 
      Background="Tan" 
      CornerRadius="10" 
      Padding="10"> 
      <StackPanel> 
       <TextBlock HorizontalAlignment="Center" Margin="0 0 0 5">Please select a 
        <Run FontStyle="Italic">week day 
        </Run>: 
       </TextBlock> 
       <TextBlock 
        Name="theMessage" 
        HorizontalAlignment="Center" 
        Margin="0 10 0 0" 
        Text="..."/> 
      </StackPanel> 
     </Border> 
     </StackPanel> 
    </Grid> 
</UserControl> 
+0

Bingo, tuyệt vời, đã hoạt động, cảm ơn! –

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