网格中一行的用户控件

3

我有一个如下所示的网格:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>

    <!-- GridRow-Definition -->

    <Label Grid.Row="0" Grid.Column="0">FirstRow:</Label>
    <TextBox Grid.Row="0" Grid.Column="1" Text="{Binding Binding_To_First_Row}" />

    <Label Grid.Row="1" Grid.Column="0">SecondRow:</Label>
    <TextBox Grid.Row="1" Grid.Column="1" Text="{Binding Binding_To_Second_Row}" />

    <!-- many more Label-TextBox-Rows -->
</Grid>

问题: 是否有一种方法创建一个包含标签和文本框的用户控件并正确对齐第一列?

1个回答

6
答案是肯定的,这是可能的,但也许你应该使用DataGrid或者ItemsControl和DataTemplate。然而,对于你的问题,简单的答案是,如果你需要不同网格的网格列同步宽度,你使用SharedSizeGroup属性,例如:
<UserControl>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition SharedSizeGroup="column1" Width="auto"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
    </Grid>
</UserControl>

然后在父元素中使用 Grid.IsSharedSizeScope="True"

<StackPanel Grid.IsSharedSizeScope="True">
    <local:UserControl1/>
    <local:UserControl1/>
</StackPanel>

这将同步具有相同 SharedSizeGroup 的任何列(或行)在该范围内(您可以有多个嵌套范围)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接