如何在绑定后向ItemsControl添加更多项
本文关键字:添加 ItemsControl 绑定 | 更新日期: 2023-09-27 18:25:26
在我的C#windows手机应用程序中,我创建了一个绑定,将字符串列表绑定到ItemsControl
。
// MyCollections is a List<string>
<ItemsControl x:Name="ContentRoot" ItemsSource="{Binding MyCollections}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding }" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
它有效。但我的问题是,绑定后如何将我自己的项目(例如"单击添加更多")添加到此ItemsControl
?
这个问题有两个答案:
-
使用
ObservableCollection
而不是List
,因为它会在添加/删除项目时通知UI。然后您只需将新项目添加到视图模型中的列表中。 -
使用
CompositeCollection
,这样您就可以在不修改实际集合的情况下拥有"附加"项目。
通常你会做1,但由于你想要一个"点击添加更多"类型的选项,CompositeCollection
可能是最好的选择。
既然你使用了windowsphone(但标记了WPF),你可能想看看这篇文章,了解如何编写自己的CompositeCollection
对象:如何在WP8中进行CompositeCollection?
使用CompositeCollection
在XAML中添加其他项。这应该有效:
<StackPanel x:Name="stackPanel">
<StackPanel.Resources>
<CompositeCollection x:Key="myCollection">
<CollectionContainer Collection="{Binding DataContext.MyCollections,
Source={x:Reference stackPanel}}"/>
<ContentControl Content="Click to add more"/>
</CompositeCollection>
</StackPanel.Resources>
<ItemsControl x:Name="ContentRoot"
ItemsSource="{StaticResource myCollection}"/>
</StackPanel>