我正在創建一個新的用戶控件。我的控件擴展了一個StackPanel,現在由另一個StackPanel組成,我在其中添加了一些Rectangles。我希望內部StackPanel在控件內水平居中,矩形與內部StackPanel的底部垂直對齊。我的代碼在下面,但是它導致內部StackPanel與控件的左側對齊,並且矩形在內部StackPanel的頂部對齊。以編程方式更改的矩形上的HorizontalAligment不起作用
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);
}
}
主要是因爲我打算稍後將其他項添加到stackPanel。感謝指針;我沒有立即看到任何關於路線的事情,但會繼續看起來更深。 – aha
事實上,我有很多StackPanel的問題沒有很好地瞭解它的大小/內容/ ...我現在只使用Grid。也許這會解決你的問題。 – GameAlchemist