当以编程方式更改时,矩形上的水平对齐不起作用
本文关键字:水平 不起作用 对齐 编程 方式更 | 更新日期: 2023-09-27 18:16:21
我正在创建一个新的用户控件。我的控件扩展了一个StackPanel,现在由另一个StackPanel组成,我在其中添加了一些矩形。我想内部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);
}
}
我的第一个问题是:为什么不直接添加矩形到您的stackPanel ?我的意思是没有token持有人的东西。this.Children.Add(矩形);而不是this.tokenHolder.Children.Add(矩形);
Switch on code帮助我解决了这些问题:http://www.switchonthecode.com/tutorials/wpf-tutorial-creating-a-custom-panel-control
我找到问题了。这是一行:
this.Orientation = Orientation.Horizontal;
当我把它改成方向。垂直,内部tokenPanel居中很好。