J'essaie de définir le remplissage d'un StackPanel mais il n'y a pas une telle propriété. J'ai essayé StackPanel.Border, mais il n'y a pas non plus une telle propriété.
Des idées?
Vous pouvez mettre une bordure autour du StackPanel et définir un remplissage à ce sujet. Je finis souvent par faire cela, car il existe de nombreux UIElements qui n'ont pas de propriété de remplissage.
<Border Padding="10">
<StackPanel>
<!--...-->
</StackPanel>
</Border>
(Remarque: tous les FrameworkElements ont une propriété Margin, qui espacera l'élément, mais n'inclura pas la largeur de la marge dans le cadre de ActualWidth).
Si vous souhaitez espacer les éléments à l'intérieur d'un StackPanel, vous voudrez ajouter une marge à chaque enfant, comme l'a dit Rob.
Ou vous pourriez faire quelque chose de similaire à TiM:
<Border>
<StackPanel Margin="10">
...
</StackPanel>
</Border>
si vous voulez espacer les éléments enfants du StackPanel (qui n'a pas de propriété Padding), voir: Comment puis-je espacer les éléments enfants d'un StackPanel?
Vous souhaiterez probablement ajouter une marge aux éléments du panneau. Vous obtiendrez le même résultat, il suffit de l'approcher à reculons.
Serait-ce la marge que vous recherchez?
Il s'agit d'une variante de rembourrage pour les éléments de 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>