Xaml 边界控制未填充到网格的行宽度
我有一个网格控件,它是按列拆分的Xaml 边界控制未填充到网格的行宽度,xaml,windows-8,microsoft-metro,Xaml,Windows 8,Microsoft Metro,我有一个网格控件,它是按列拆分的 <Grid HorizontalAlignment="Stretch"> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition Width="80" /> <ColumnDefinition Width="65" /> </Grid.ColumnDefin
<Grid HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="80" />
<ColumnDefinition Width="65" />
</Grid.ColumnDefinitions>
</Grid>
我在第0列中有一个边框控件。然而,我面临的一个问题是,边界控制没有填充到这一列的宽度。边框包含启用换行的文本块。如果textblock中的文本大于宽度,则它将被包装并拉伸以填充可用空间
但是,如果文本块包含仅约5-10个字符的小文本,则边框控件不会拉伸
边界控件显式设置为水平对齐和垂直对齐为拉伸,边距为0。但是边框仍然没有延伸到第0列中可用的空间?尝试设置边框的宽度。如果您想让边框占据空间,请将ColumnDefinition设置为*First我相信您的第一列不能被删除
<DataGridTemplateColumn Width="150">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Border HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
BorderBrush="Red"
BorderThickness="2">
<TextBlock Text="{Binding Name}" />
</Border>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<ColumnDefinition />
相反,我认为应该是这样
<ColumnDefinition Width="*" />
ColumnDefinition.Width的类型为GridLength。GridLength是一种结构,默认为“自动”。Auto将尝试占用其子控件所需的最小空间。值*表示占用相对于其他*列的所有空间。2*列所占空间是1*列的两倍。我通常建议使用1到100之间的数字,并将其视为百分比。由于没有其他列是*列,因此值simple*表示占用所有剩余空间
您可能会认为,通过固定所有其他列的宽度,它将强制第一列为*,但我认为情况并非如此
您可以在此处阅读有关GridLength的更多信息:
请告诉我们您对边界的定义。它位于星形列中,但您可能已经为边框指定了水平对齐或垂直对齐,这将否定填充父级内容区域的默认行为。我已经验证了这个示例在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>
就我而言,我不必使用DataGrid控件。。。这是一个简单的网格,我把它放在了页面上。你能在这里发布边界的定义吗?不,它默认为。可能是为了诊断一个奇怪的问题,但显式设置宽度,你也可以在WinForms中开发。你没有显式设置宽度,它会自动占用空间,以便支持可调整大小的窗口,并且UI不会混乱。