我有一个<StackPanel>
控件,我填充了TextBox
个控件。
我想在TextBox
个对象上垂直间隔。但是,对于我的代码,即使我已将<StackPanel>
设置为Stretch,所有三个TextBox仍然会分组在VerticalAligment
的顶部。
也不确定这是否有帮助,我的LayoutRoot是一个Grid 8 x 8和边框alignes来填充大部分LayoutRoot
我无法手动为每个文本框分配边距,因为StackPanel
将手动填充,TextBoxes
的数量可能会有所不同。
<Border
Grid.Row="1"
Grid.RowSpan="6"
Grid.Column="0"
Grid.ColumnSpan="8"
BorderBrush="Black"
Background="White">
<StackPanel x:Name="listItems"
Grid.Row="1"
Grid.RowSpan="6"
Grid.Column="0"
Grid.ColumnSpan="8"
Margin="10"
HorizontalAlignment="Left"
VerticalAlignment="Stretch">
<TextBox Text="line 1" />
<TextBox Text="line 2" />
<TextBox Text="line 3" />
</StackPanel>
</Border>
答案 0 :(得分:1)
看一下这个链接:http://blogs.msdn.com/b/devdave/archive/2008/07/26/layout-fundamentals-part-2-layout-containers.aspx它非常适合解释Silverlight布局面板及其选项。我将使用一个垂直对齐拉伸和网格行定义没有高度设置的网格,因为这将为您平均划分网格行之间的可用空间。像这样:
<Border
Grid.Row="1"
Grid.RowSpan="6"
Grid.Column="0"
Grid.ColumnSpan="8"
BorderBrush="Black"
Background="White">
<Grid x:Name="listItems"
Grid.Row="1"
Grid.RowSpan="6"
Grid.Column="0"
Grid.ColumnSpan="8"
Margin="10"
HorizontalAlignment="Left"
VerticalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBox Grid.Row="0" Text="line 1" />
<TextBox Grid.Row="1" Text="line 2" />
<TextBox Grid.Row="2" Text="line 3" />
</Grid>
</Border>
答案 1 :(得分:1)
您可以使用UniformGrid
来实现动态数量为TextBlock
s的均匀分布的垂直空间。例如:
XAML:
<UniformGrid x:Name="listItems"
Grid.Row="1"
Grid.RowSpan="6"
Grid.Column="0"
Grid.ColumnSpan="8"
Margin="10"
HorizontalAlignment="Left"/>
代码隐藏:
//populate the UniformGrid dynamically from code :
int numberOfRow = 3;
listItems.Columns = 1;
listItems.Rows = numberOfRow;
for (int i = 0; i < numberOfRow; i++)
{
var txt = new TextBlock { Text = "test " + i };
listItems.Children.Add(txt);
}