首页 > 解决方案 > 将数据输入到WPF C#中的上一行控件后,如何动态添加控件行?

问题描述

我正在做一个在运行时为数据库创建表的项目。我的第一行看起来像这样

当前行控件

但是从上一行输入后,我需要添加更多行。就像在 Visual Studio 中创建表一样,它在我们完成输入前一行或输入后添加行。我不知道这是否是一个简单的任务。我想我必须创建一个事件监听器。或类似的。

这是我的 XAML 代码

<StackPanel Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="4" Margin="20 0 0 0">
            <Grid
                x:Name="FieldsLineUpGrid"
                TextElement.FontSize="{Binding Value, ElementName=FontSizeSlider}"
                IsEnabled="{Binding IsChecked, ElementName=IsEnabledCheckBox}"
                HorizontalAlignment="Left">
                <Grid.Resources>
                    <Style x:Key="StyleHeader" TargetType="TextBlock" BasedOn="{StaticResource MaterialDesignCaptionTextBlock}">
                        <Setter Property="VerticalAlignment" Value="Center" />
                        <Setter Property="HorizontalAlignment" Value="Left" />
                        <Setter Property="Margin" Value="10 0" />
                        <Setter Property="Opacity" Value="0.56" />
                    </Style>
                    <Style x:Key="FieldHeader" TargetType="TextBlock" BasedOn="{StaticResource MaterialDesignCaptionTextBlock}">
                        <Setter Property="VerticalAlignment" Value="Top" />
                        <Setter Property="HorizontalAlignment" Value="Center" />
                        <Setter Property="Margin" Value="0 6" />
                        <Setter Property="Opacity" Value="0.56" />
                    </Style>
                    <Style x:Key="NotAvailable" TargetType="TextBlock" BasedOn="{StaticResource MaterialDesignCaptionTextBlock}">
                        <Setter Property="Text" Value="N/A" />
                        <Setter Property="Opacity" Value="0.24" />
                        <Setter Property="VerticalAlignment" Value="Center" />
                        <Setter Property="HorizontalAlignment" Value="Center" />
                    </Style>
                </Grid.Resources>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                </Grid.ColumnDefinitions>

                <TextBlock Grid.Column="1" Grid.Row="0" Style="{StaticResource FieldHeader}" Text="Name" HorizontalAlignment="Left"/>
                <TextBlock Grid.Column="2" Grid.Row="0" Style="{StaticResource FieldHeader}" Text="Data Type" HorizontalAlignment="Left"/>
                <TextBlock Grid.Column="3" Grid.Row="0" Style="{StaticResource FieldHeader}" Text="Allow Nulls" HorizontalAlignment="Left"/>
                <TextBlock Grid.Column="4" Grid.Row="0" Style="{StaticResource FieldHeader}" Text="Default" HorizontalAlignment="Left"/>

                <TextBox
                    Grid.Column="1" Margin="0 0 10 0"
                    Grid.Row="1" MinWidth="160"/>
                <TextBox
                    Grid.Column="1" Margin="0 0 10 0"
                    Grid.Row="2"  MinWidth="100"/>

                <ComboBox
                    Grid.Column="2" 
                    Grid.Row="1"  MinWidth="100"/>
                <ComboBox
                    Grid.Column="2"
                    Grid.Row="2" />

                <CheckBox
                    Grid.Column="3" VerticalAlignment="Bottom" HorizontalAlignment="Center"
                    Grid.Row="1" />
                <CheckBox
                    Grid.Column="3" VerticalAlignment="Bottom" HorizontalAlignment="Center"
                    Grid.Row="2"/>

                <TextBox
                    Grid.Column="4" Margin="10 0 0 0"
                    Grid.Row="1"  MinWidth="100"/>
                <TextBox
                    Grid.Column="4" Margin="10 0 0 0"
                    
                    Grid.Row="2" />

            </Grid>
        </StackPanel>

我怎样才能实现它

标签: c#wpfxaml

解决方案


推荐阅读