加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 按下按钮后,动态地将UI元素添加到StackPanel

发布时间:2020-12-15 23:32:23 所属栏目:百科 来源:网络整理
导读:这是我的第一个问题:) 我不是一个专业的程序员,我只有18岁而且我没有在大学或其他任何地方学习过,所以如果我说些愚蠢的话,请不要恨我:p 我正在制作(或者更确切地说是……)一个适用于Windows 10 UWP的应用程序,我的一段xaml代码如下所示: Grid Grid.Row="1"
这是我的第一个问题:)
我不是一个专业的程序员,我只有18岁而且我没有在大学或其他任何地方学习过,所以如果我说些愚蠢的话,请不要恨我:p

我正在制作(或者更确切地说是……)一个适用于Windows 10 UWP的应用程序,我的一段xaml代码如下所示:

<Grid Grid.Row="1" Grid.Column="1">
            <Grid.RowDefinitions>
                <RowDefinition Height="12"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="12"/>
            </Grid.RowDefinitions>
            <Rectangle Margin="0" Grid.Row="1" Fill="White" RadiusX="7" RadiusY="7"/>

            <Grid Grid.Row="1" Margin="12,6">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>

                <StackPanel>

                        <TextBox x:Name="textProduct" Margin="0,6,6" TextWrapping="Wrap"  VerticalAlignment="Top" BorderBrush="#FFCECED2" FontFamily="Segoe UI Light" FontSize="17" PlaceholderText="Produkt..." BorderThickness="1"/>

                </StackPanel>

                <StackPanel Grid.Column="1">
                    <TextBox x:Name="textAdditionalInfo" Margin="6,6" TextWrapping="Wrap"  VerticalAlignment="Top" BorderBrush="#FFCECED2" FontFamily="Segoe UI Light" FontSize="17" PlaceholderText="Dodatkowe info..." BorderThickness="1"/>
                </StackPanel>

            </Grid>

我的底部还有一个应用栏,带有添加和删除按钮.我希望每次用户按下“添加”按钮时都能向两个StackPanel动态添加另一行TextBox,并在每次按下“删除”按钮时删除一行.不幸的是,我不知道如何实现这一目标.我试图找到答案,我认为这可以通过使用UserControl完成,但我不知道如何实现这一点.

我希望这不是太复杂,因为我不希望看到像一个人要求其他人为我做我所有的工作……

如果这是一个大问题,那么它甚至不需要支持删除TextBoxes.

我希望你明白我的意思.我不是英国人,对任何错误都很抱歉;)

解决方法

欢迎来到XAML,值得花时间学习它!

为了显示数据,XAML有一些聪明的东西叫做DataBinding.一般概念是将List(例如,您希望在StackPanel中显示的所有字符串)绑定到视图中的元素.现在,无论何时修改该列表,视图都会自动适应. StackPanel不支持Binding,但是例如ListView(如下所示)

你怎么看这个有关数据绑定的基本信息:https://blogs.msdn.microsoft.com/jerrynixon/2012/10/12/xaml-binding-basics-101/

考虑到这一点,你可以做这样的事情:

<!-- insert at the top -->
<Page.Resources>
    <DataTemplate x:Name="MyDataTemplate">
        <TextBlock Text="{Binding } />
    </DataTemplate>
</Page.Resources>

<!-- insert where you want the list to appear -->
<ListView x:Name="ListView" ItemTemplate="{StaticResource MyDataTemplate}" ItemsSource="{Binding MyCollection}" />

唯一困难的部分是将列表绑定到ListView,但我相信你可以使用上面的教程来做到这一点;)

另外,您可以使用x:Key =“MyStack”命名StackPanel,并手动添加项目:

MyStack.Children.Add(new TextBlock() {Text = "myText"});

但是,我真的可以建议您使用DataBinding方法,因为它使得在大型项目中与UI的交互变得更加容易.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读