WPF-两列对齐右列

WPF-两列对齐右列,wpf,xaml,Wpf,Xaml,我有以下XAML,我试图简化并删除不相关的代码,如名称、内容、绑定等 问题是右边的文本框没有很好地对齐。我希望文本框对齐,使它们具有相同的宽度 XAML代码: <StackPanel Grid.Row="1" Grid.RowSpan="2" Grid.Column="1" MinWidth="200" HorizontalAlignment="Right"> <GroupBox > <GroupBox.HeaderTemplate>

我有以下XAML,我试图简化并删除不相关的代码,如名称、内容、绑定等

问题是右边的文本框没有很好地对齐。我希望文本框对齐,使它们具有相同的宽度

XAML代码:

<StackPanel Grid.Row="1" Grid.RowSpan="2" Grid.Column="1" MinWidth="200" HorizontalAlignment="Right">
<GroupBox >
    <GroupBox.HeaderTemplate>
        <DataTemplate>
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>

                <TextBlock Grid.Row="0" Grid.Column="1" Margin="5"/>
            </Grid>
        </DataTemplate>
    </GroupBox.HeaderTemplate>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="69"/>
            <ColumnDefinition Width="6"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <Label Grid.Column="0" Grid.Row="0" Margin="5" VerticalAlignment="Center" Grid.ColumnSpan="2"/>
        <TextBox Grid.Column="2" Grid.Row="0" Margin="5,7" VerticalAlignment="Center"/>

        <Label Grid.Column="0" Grid.Row="1" Margin="5" VerticalAlignment="Center" Grid.ColumnSpan="2"/>
        <TextBox Grid.Column="2" Grid.Row="1" Margin="5,7" VerticalAlignment="Center"/>

        <ItemsControl Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>

                        <Label Grid.Column="0" Grid.Row="0" Margin="5" VerticalAlignment="Center"/>
                        <TextBox Grid.Column="1" Grid.Row="0" Margin="5" VerticalAlignment="Center"/>
                    </Grid>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </Grid>
</GroupBox>
</StackPanel>


我尝试了很多不同的组合,但无法实现我的最终目标。

您可以在项控件上方的网格上指定:Grid.IsSharedSizeScope='True'。 然后,在item的DataTemplate中,在第一列定义中指定: SharedSizeGroup='LabelsColumn(或您喜欢的任何名称)'。 这将自动重新计算第一列的宽度,与最长的文本/标签一样长(在这种情况下)。 例如:



忘记添加,同时在ItemsControl上方网格中的ColumnDefinition上添加SharedSizeGroup='LabelsColumn'。对于标签栏,请这样做,并将其更改为“自动”,也可以使用正确答案,但可以使用一个示例。我将尝试执行您所描述的操作,但请使用一个简短的示例(或使用我的一些代码)将不胜感激!
<StackPanel Grid.Row="1"
                Grid.RowSpan="2"
                Grid.Column="1"
                MinWidth="200"
                HorizontalAlignment="Right">
        <GroupBox>
            <GroupBox.HeaderTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>

                        <TextBlock Grid.Row="0"
                                   Grid.Column="1"
                                   Margin="5" />
                    </Grid>
                </DataTemplate>
            </GroupBox.HeaderTemplate>
            <Grid Grid.IsSharedSizeScope="True">
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="*" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" 
                                      SharedSizeGroup="Labels"/>
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                <Label Grid.Column="0"
                       Grid.Row="0"
                       Margin="5"
                       VerticalAlignment="Center"
                       Grid.ColumnSpan="2" />
                <TextBox Grid.Column="1"
                         Grid.Row="0"
                         Margin="5,7"
                         VerticalAlignment="Center" />

                <Label Grid.Column="0"
                       Grid.Row="1"
                       Margin="5"
                       VerticalAlignment="Center"
                       Grid.ColumnSpan="2" />
                <TextBox Grid.Column="1"
                         Grid.Row="1"
                         Margin="5,7"
                         VerticalAlignment="Center" />

                <ItemsControl Grid.Row="2"
                              Grid.Column="0"
                              Grid.ColumnSpan="3">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <Grid>
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="Auto" />
                                </Grid.RowDefinitions>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto"
                                                      SharedSizeGroup="Labels"/>
                                    <ColumnDefinition Width="*" />
                                </Grid.ColumnDefinitions>

                                <Label Grid.Column="0"
                                       Grid.Row="0"
                                       Margin="5"
                                       VerticalAlignment="Center" />
                                <TextBox Grid.Column="1"
                                         Grid.Row="0"
                                         Margin="5"
                                         VerticalAlignment="Center" />
                            </Grid>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
            </Grid>
        </GroupBox>
    </StackPanel>