2009-02-13 10 views
5

Tengo un UserControl raíz que es 300 alto.Cómo forzar a un contenedor Silverlight a expandirse/contraerse al tamaño de sus controles secundarios?

Dentro de eso tengo un borde que quiero expandir al tamaño de sus propios controles, así que si apilo en más controles, se expandirá - menos controles, se contraerá.

Sin embargo, cuando me puse a "Auto" se expande hacia fuera para el tamaño de su contenedor principal en lugar del tamaño de su niños Controles.

¿Cómo puedo hacer que Border se expanda y contraiga al tamaño de sus controles secundarios, algo así como la funcionalidad de una tabla 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 tanto para la pregunta y la respuesta. Esto me ha estado conduciendo absolutamente BONKERS durante la última hora por la razón exactamente opuesta. Cambiar de StackPanel a Grid para LayoutRoot finalmente permitió que mi grilla interna se expandiera al tamaño principal. OI VEY. –

Respuesta

6

envolverlo en un StackPanel debe hacerlo:

<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, genial, funcionó, gracias! –

Cuestiones relacionadas