我有一个网格控件,它已按列分割。
<Grid HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="80" />
<ColumnDefinition Width="65" />
</Grid.ColumnDefinitions>
</Grid>
我在第0列中有一个边框控件。但是我遇到的问题是边框控件没有填充到此列的宽度。边框包含启用了Wrapping的文本块。如果textblock中的文本大于宽度,则它会被包裹并延伸以填充可用空间。
但是,如果文本块包含仅约5-10个字符的小文本,则边框控件不会延伸。
边框控件使用HorizontalAlignment和VerticalAlignment显式设置为拉伸和边距为0.但是边框仍然没有延伸到第0列中可用的空间?
答案 0 :(得分:1)
请告诉我们您对边境的定义。它位于星号大小的列中,但您可能已经Border
一个HorizontalAlignment
或VerticalAlignment
,这将取消填充父级内容区域的默认行为。我已经验证了这个示例在Kaxaml中运行良好。
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="65"/>
</Grid.ColumnDefinitions>
<Border Background="LightGreen"/>
<TextBlock Grid.Column="1" Foreground="Blue" Text="Column01"/>
<TextBlock Grid.Column="2" Foreground="Red" Text="Column02"/>
</Grid>
</Page>
答案 1 :(得分:0)
尝试设置边框的宽度。如果要让边框占用空间,请将ColumnDefinition设置为*(First)
答案 2 :(得分:0)
我相信你的第一栏不能
<ColumnDefinition />
相反,我认为它应该是
<ColumnDefinition Width="*" />
ColumnDefinition.Width的类型为GridLength。 GridLength是一个结构,它默认为“Auto”。 Auto会尝试占用其子控件所需的最小空间。值“*”表示相对于其他*列占用所有空间。 (2 *列将占用1 *列的两倍空间。我通常建议使用1到100之间的数字,并将它们视为百分比)。由于没有其他列是*列,因此简单的“*”值意味着占用所有剩余空间。
你会认为通过将所有其他列固定为宽度,它会强制第一列为“*”,但我不认为是这种情况。
您可以在此处阅读有关GridLength的更多信息:
http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.gridlength.aspx
答案 3 :(得分:-1)
<DataGridTemplateColumn Width="150">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Border HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
BorderBrush="Red"
BorderThickness="2">
<TextBlock Text="{Binding Name}" />
</Border>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>