StackPanel в выравнивании StackPanel не правильно - PullRequest
2 голосов
/ 21 марта 2012

У меня есть StackPanel, которая содержит дочерние StackPanels (добавлено в коде позади).

Parent StackPanel

    <StackPanel Name="spDaysWeather"  Grid.Column="0" Grid.ColumnSpan="2" HorizontalAlignment="Stretch" Grid.Row="3" Orientation="Horizontal">



    </StackPanel>

Детские стековые панели

for (int i=1;i<WeatherList.Count;i++)
        {
            StackPanel StackPanelDay = new StackPanel { Orientation =Orientation.Vertical, VerticalAlignment = VerticalAlignment.Stretch, HorizontalAlignment= HorizontalAlignment.Stretch};
            Label day = new Label { Content = WeatherList[i].weatherdate.DayOfWeek, FontSize = 10 };
            System.Windows.Controls.Image imgweather = new System.Windows.Controls.Image { Source = ReturnCultureImage(String.Format("weather_{0}", WeatherList[i].condition.ToLower().Replace(" ", "_"))), Width = 75, Height = 75};

            StackPanelDay.Children.Add(day);
            StackPanelDay.Children.Add(imgweather);
            spDaysWeather.Children.Add(StackPanelDay);

        }

Когда я запускаю приложение, я получаю следующий экран

page view

Черный ящик - родительская StackPanel. Красные квадраты - это дочерние StackPanels, которые я добавляю динамически.

Как заставить детей расположиться по центру по вертикали, а также изменить размер при изменении размера окна приложения.

Стоит ли использовать StackPanel или есть другая панель, которая лучше подойдет?

Большое спасибо

1 Ответ

3 голосов
/ 21 марта 2012

Поместите родительский StackPanel в сетку и измените горизонтальное выравнивание StackPanel на Center.

XAML:

<Grid Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="3">
  <StackPanel Name="spDaysWeather" HorizontalAlignment="Center" Orientation="Horizontal">
  </StackPanel>
</Grid>

Это также должно работать, если вы установитетолько горизонтальное выравнивание стековой панели по центру.

XAML:

<StackPanel Name="spDaysWeather" 
            Grid.Column="0"
            Grid.ColumnSpan="2"
            HorizontalAlignment="Center"
            Grid.Row="3" 
            Orientation="Horizontal"/>
...