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不会混乱。