Я создаю новый пользовательский элемент управления. Мой элемент управления расширяет StackPanel и на данный момент состоит из еще одной StackPanel, в которую я добавляю несколько прямоугольников. Я хотел бы, чтобы внутренняя панель стека была горизонтально центрирована внутри элемента управления, а прямоугольники были выровнены по вертикали с нижней частью внутренней панели стека. Мой код ниже, но в результате внутренняя StackPanel выровнена по левому краю элемента управления, а прямоугольники выровнены вверху внутренней StackPanel.
public partial class ComponentStacker : StackPanel
{
private StackPanel tokenHolder;
public ComponentStacker(int numTokens)
{
this.Orientation = Orientation.Horizontal;
tokenHolder = new StackPanel();
this.Children.Add(tokenHolder);
tokenHolder.Background = new SolidColorBrush(Colors.DarkKhaki);
tokenHolder.HorizontalAlignment = HorizontalAlignment.Center;
for (int i = 0; i < numTokens; i++)
{
Rectangle rect = new Rectangle();
rect.Width = 15;
rect.Height = 10;
rect.Margin = new Thickness(5, 5, 5, 0);
rect.Fill = new SolidColorBrush(Colors.Red);
rect.VerticalAlignment = VerticalAlignment.Bottom;
this.tokenHolder.Children.Add(rect);
}
this.Background = new SolidColorBrush(Colors.Goldenrod);
this.Margin = new Thickness(10);
}
}