在我的C#windows phone应用程序中,我创建了一个绑定,将字符串列表绑定到ItemsControl
。
// MyCollections is a List<string>
<ItemsControl x:Name="ContentRoot" ItemsSource="{Binding MyCollections}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding }" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
有效。但我的问题是如何在绑定后将ItemsControl
添加到我自己的项目(例如“点击添加更多”)?
答案 0 :(得分:3)
这个问题有两个答案:
使用ObservableCollection
代替List
,因为它会在添加/删除项目时通知用户界面。然后,您只需将新项目添加到视图模型中的列表中。
使用CompositeCollection
,这样您就可以获得&#34;额外的&#34;没有修改实际集合的项目。
通常你会做1,但因为你想要一个&#34;点击添加更多&#34;选项类型,CompositeCollection
可能是要走的路。
由于您提到了Windows手机(但标记为WPF),您可能需要查看此帖子,了解如何编写自己的CompositeCollection
对象:how to do a CompositeCollection in WP8?
答案 1 :(得分:1)
使用 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>