使用 mvvm 动态创建控件

dynamically create control using mvvm

我一直在尝试动态创建控件,到目前为止它正在运行。但我的问题是布局

<Grid Grid.Row="2" >
                <ItemsControl IsTabStop="False" ItemsSource="{Binding ListControls}">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch">
                                <Grid>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="120*"/>
                                        <RowDefinition Height="120*"/>
                                        <RowDefinition/>
                                    </Grid.RowDefinitions>
                                    <Label  Content="AN:" Margin="5,5,5,5" FontSize="14" VerticalContentAlignment="Center"/>
                                    <TextBox  Grid.Column="1" FontSize="14" VerticalContentAlignment="Center" Margin="5,5,5,5"/>
                                </Grid>
                            </StackPanel>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
            </Grid>

同上xaml。这是布局的屏幕截图

如果我像这样使用 xaml

 <Grid Grid.Row="2" >
                <ItemsControl IsTabStop="False" ItemsSource="{Binding ListControls}">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch">
                                <Label  Content="AN:" Margin="5,5,5,5" FontSize="14" VerticalContentAlignment="Center"/>
                                <TextBox  Width="100" FontSize="14" VerticalContentAlignment="Center" Margin="5,5,5,5"/>
                            </StackPanel>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
            </Grid>

但我的目标是在程序最大化时扩展文本框。

如何调整 xaml 代码以扩展文本框?谢谢

直接使用Grid代替StackPanel也去掉Width="100".

<Grid HorizontalAlignment="Stretch">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Label Grid.Column="0"  Content="AN:" Margin="5,5,5,5" FontSize="14" VerticalContentAlignment="Center"/>
    <TextBox Grid.Column="1" FontSize="14" VerticalContentAlignment="Center" Margin="5,5,5,5"/>
</Grid>