这是我在这里的第一个问题:)我不是专业程序员,我只有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,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,0,6" TextWrapping="Wrap" VerticalAlignment="Top" BorderBrush="#FFCECED2" FontFamily="Segoe UI Light" FontSize="17" PlaceholderText="Dodatkowe info..." BorderThickness="1"/>
</StackPanel>
</Grid>
我在底部还有一个应用程序栏,里面有"添加"one_answers"删除"按钮。我希望每次用户按下"添加"按钮时都能向两个StackPanel动态添加另一行TextBoxes,每次按下"删除"按钮时也能删除一行。不幸的是,我不知道如何做到这一点。我试图找到一个答案,我认为这可以通过使用UserControl来完成,但我不知道如何实现。
我希望这不会太复杂,因为我不想看到他们像一个要求别人为我做所有工作的人…
如果这是一个大问题,那么它甚至不需要支持删除TextBoxes。
我希望你明白我的意思。我不是以英语为母语的,所以很抱歉有任何错误;)
欢迎使用XAML,值得花时间学习!
为了显示数据,XAML有一种叫做DataBinding的智能东西。一般概念是将List(例如,要在StackPanel
中显示的所有strings
)绑定到视图中的元素。现在,每当修改该列表时,视图都会自动调整。StackPanel
不支持绑定,但例如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交互。