我有一个包含子StackPanels的StackPanel(在后面的代码中添加)。
父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);
}
当我运行该应用程序时,我得到以下显示
黑盒是父级StackPanel。红色方块是我正在动态添加的子StackPanels。
如何使孩子们垂直居中,并在应用程序窗口更改大小时调整大小。
我应该使用StackPanel还是存在另一个更适合的面板?
非常感谢
最佳答案
将您的父StackPanel放置在网格中,然后将StackPanel的HorizontalAlignment更改为Center。
XAML:
<Grid Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="3">
<StackPanel Name="spDaysWeather" HorizontalAlignment="Center" Orientation="Horizontal">
</StackPanel>
</Grid>
如果仅将StackPanel的HorizontalAlignment设置为Center,它也应该起作用。
XAML:
<StackPanel Name="spDaysWeather"
Grid.Column="0"
Grid.ColumnSpan="2"
HorizontalAlignment="Center"
Grid.Row="3"
Orientation="Horizontal"/>
关于c# - StackPanel对齐中的StackPanel不正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9803731/