2009-08-20 19 views
56

Próbuję ustawić dopełnienie StackPanel, ale nie ma takiej właściwości. Próbowałem StackPanel.Border, ale nie ma takiej właściwości.Padding na StackPanel?

Wszelkie pomysły?

Odpowiedz

88

Można umieścić obramowanie wokół StackPanel i ustawić na nim dopełnienie. Często to robię, ponieważ istnieje wiele UIElements, które nie mają właściwości padding.

<Border Padding="10"> 
    <StackPanel> 
     <!--...--> 
    </StackPanel> 
</Border> 

(Uwaga: wszystkie FrameworkElements mają właściwość margines, który nie będzie miejsca na element, ale obejmować szerokość marginesu jako część ActualWidth).

Jeśli chcesz umieścić elementy wewnątrz panelu StackPanel, dodaj margines do każdego dziecka, jak powiedział Rob.

+0

Czy istnieje sposób, aby utworzyć styl z tego z 'StackPanel' jako' ContentTemplate'? – bytecode77

+0

Przepraszam, nie wiem. Minęły lata odkąd korzystam z WPF. Mam nadzieję, że pojawi się jakiś nieznajomy, który wie. –

2

Czy to może być margines, którego szukasz?

+0

Margin będzie działać, jeśli nie zadzieraj ze środowisk ... – Califf

4

Prawdopodobnie będziesz chciał zamiast tego dodać margines do elementów w panelu. Otrzymasz taki sam wynik, wystarczy podejść do niego wstecz.

+5

Mówisz, robi się w nim jedno miejsce jest gorszy niż dodawanie marginesów do kilkunastu elementów wewnątrz panelu sterpanel? – Califf

+0

Nie .. on mówi, że jest to najłatwiejszy sposób, ponieważ StackPanel _nie ma właściwości Wypełnienie_. – TernaryTopiary

4

Albo można zrobić coś podobnego do Tim:

<Border> 
    <StackPanel Margin="10"> 
     ... 
    </StackPanel> 
</Border> 
3

jest to wariant wyściółką dla elementów StackPanel

<StackPanel Orientation="Horizontal" Grid.Row="2"> 
    <StackPanel.Resources> 
     <Style x:Key="StackPanelPadding" TargetType="Control"> 
      <Setter Property="Margin" Value="5,0,0,0"/> 
      <Setter Property="Height" Value="40"/> 
     </Style> 
     <Style BasedOn="{StaticResource StackPanelPadding}" TargetType="Button"/> 
    </StackPanel.Resources> 
    <Button/> 
    <Button/> 
</StackPanel> 
+1

Jest to w porządku, ale zastąpi (lub nie będzie) margines, który spróbujesz ustawić na swoich przyciskach. To może być w porządku, ale tutaj tracisz elastyczność. Jeśli chcesz, aby styl był stosowany do wszystkich formantów w zasięgu zasobu, po prostu nie używaj klucza 'x: '. Dlatego ustawienie dwóch stylów tutaj jest niepotrzebne. Usuń drugi (z 'BasedOn') i pozbądź się atrybutu' x: Key' na pierwszym. Jeśli chcesz, aby był stosowany tylko do przycisków, użyj tego jako typu celu, w przeciwnym razie możesz go pozostawić bez zmian. – KyleMit