2010-04-18 2 views
32

Вот мой XAML код:Установите границу вокруг 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> 

Граница устанавливается вокруг всего окна. А также, когда я создаю еще один StackPanel, он добавляется справа от моей предыдущей StackPanel, а не добавляется под ним. В чем причина этого?

ответ

15

Вы устанавливаете DockPanel.Dock = «Вверх» в StackPanel, но StackPanel не является дочерним элементом DockPanel ... Граница. Ваше свойство стыковки игнорируется.

При перемещении DockPanel.Dock = «Top» на границе вместо этого, оба ваших проблем будет исправлено :)

24

Что об этом один:

<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

В настольных WPF приложение DockPanel не существуют для элемента Border :(Почему это? – uSeRnAmEhAhAhAhAhA

+0

@uSeRnAmEhAhAhAhAhA 'DockPanel' является самостоятельным элементом, в который вы добавляете другие элементы. Это не атрибут * для' Border', потому что вы не будете стыковать границу - он обходит объект, а не пристыковывается к нему, как то, как вы можете сделать '', который эффективно «присоединяет» раздел StackPanel (раздел) t верхняя часть DockPanel (основной контейнер). – vapcguy

Смежные вопросы