2010-04-18 3 views
32

Hier ist mein XAML-Code:Legen Sie einen Rahmen um ein StackPanel fest.

<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> 

Der Rand um das gesamte Fenster eingestellt ist. Und wenn ich ein weiteres StackPanel erstelle, wird es rechts neben meinem vorherigen StackPanel hinzugefügt, anstatt dass es darunter hinzugefügt wird. Was ist der Grund dafür?

Antwort

15

Sie legen DockPanel.Dock = "Top" für das StackPanel fest, aber das StackPanel ist kein Kind des DockPanel ... der Border ist. Ihre Docking-Eigenschaft wird ignoriert.

Wenn Sie DockPanel.Dock = "Top" an die Grenze statt bewegen, werden beide Ihrer Probleme behoben :)

24

Was ist dieses:

<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

In Desktop-WPF-Anwendung DockPanel nicht Existieren für Border-Element :(Warum ist das? – uSeRnAmEhAhAhAhAhA

+0

@uSeRnAmEhAhAhAhAhA "DockPanel" ist ein eigenständiges Element, dem Sie andere Elemente hinzufügen. Es ist kein * Attribut * für "Border", da Sie keinen Rahmen andocken werden - Es geht um ein Objekt, nicht gegen ein angedockt, wie Sie tun können ', die effektiv das StackPanel (Abschnitt) gegen" dockt " t oben auf dem DockPanel (übergreifender Container). – vapcguy