2010-04-18 36 views
32

Aquí está mi código XAML:Establezca un borde alrededor de un StackPanel.

<Window x:Class="CarFinder.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Search for cars in TuMomo" Height="480" Width="600"> 
    <DockPanel Margin="8"> 
     <Border CornerRadius="6" 
       BorderBrush="Gray" 
       Background="LightGray" 
       BorderThickness="2" 
       Padding="8"> 
      <StackPanel Orientation="Horizontal" 
        DockPanel.Dock="Top" 
        Height="25"> 
       <TextBlock FontSize="14" Padding="0 0 8 0"> 
        Search: 
       </TextBlock> 
       <TextBox x:Name="txtSearchTerm" Width="400" /> 
       <Image Source="/CarFinder;component/Images/Chrysanthemum.jpg" />    
      </StackPanel> 
     </Border> 
     <StackPanel Orientation="Horizontal" 
        DockPanel.Dock="Top" 
        Height="25"> 

     </StackPanel> 
    </DockPanel> 
</Window> 

La frontera está situado alrededor de toda la ventana. Y también, cuando creo otro StackPanel, se agrega a la derecha de mi StackPanel anterior en lugar de agregarse debajo. ¿Cuál es el motivo de esto?

Respuesta

15

Establece DockPanel.Dock = "Arriba" al StackPanel, pero el StackPanel no es un elemento secundario del DockPanel ... the Border is. Su propiedad de acoplamiento está siendo ignorada.

Si mueve DockPanel.Dock = "top" de la frontera en cambio, tanto de sus problemas se fijará :)

24

¿Qué pasa con éste:

<DockPanel Margin="8"> 
    <Border CornerRadius="6" BorderBrush="Gray" Background="LightGray" BorderThickness="2" DockPanel.Dock="Top"> 
     <StackPanel Orientation="Horizontal"> 
      <TextBlock FontSize="14" Padding="0 0 8 0" HorizontalAlignment="Center" VerticalAlignment="Center">Search:</TextBlock> 
      <TextBox x:Name="txtSearchTerm" HorizontalAlignment="Center" VerticalAlignment="Center" /> 
      <Image Source="lock.png" Width="32" Height="32" HorizontalAlignment="Center" VerticalAlignment="Center" />    
     </StackPanel> 
    </Border> 
    <StackPanel Orientation="Horizontal" DockPanel.Dock="Bottom" Height="25" /> 
</DockPanel> 
+0

En aplicación WPF escritorio DockPanel no lo hace existe para el elemento del borde :(¿Por qué es eso? – uSeRnAmEhAhAhAhAhA

+0

@uSeRnAmEhAhAhAhAhA 'DockPanel' es un elemento por derecho propio en el que se agregan otros elementos. No es un * atributo * para' Border' porque no se va a atracar un borde - va alrededor de un objeto, no acoplado contra uno, como puede hacer '', que efectivamente "acopla" el StackPanel (sección) contra t la parte superior del DockPanel (contenedor general). – vapcguy

Cuestiones relacionadas