HorizontalAligment на Rectangle не работает при программном изменении - PullRequest
0 голосов
/ 01 декабря 2011

Я создаю новый пользовательский элемент управления. Мой элемент управления расширяет 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);
    }
}

Ответы [ 2 ]

0 голосов
/ 01 декабря 2011

Я нашел проблему. Это строка:

this.Orientation = Orientation.Horizontal;

Когда я изменил его на Orientation.Vertical, внутренняя панель токенов хорошо отцентрирована.

0 голосов
/ 01 декабря 2011

Мой первый вопрос: почему бы не добавить прямоугольник прямо в вашу стековую панель? я не имею в виду вещи TokenHolder и: this.Children.Add (прямоугольник); вместо this.tokenHolder.Children.Add (прямоугольник);

Включение кода помогло мне для таких вещей: http://www.switchonthecode.com/tutorials/wpf-tutorial-creating-a-custom-panel-control

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...