C# 如何在绑定后向ItemsControl添加更多项
在我的C windows phone应用程序中,我创建了一个绑定,将字符串列表绑定到ItemsControlC# 如何在绑定后向ItemsControl添加更多项,c#,wpf,C#,Wpf,在我的C windows phone应用程序中,我创建了一个绑定,将字符串列表绑定到ItemsControl 它起作用了。但我的问题是,如何在绑定后将自己的项目(例如“单击以添加更多”)添加到此项目控件?此问题有两个答案: 使用ObservableCollection而不是List,因为它会在添加/删除项时通知UI。然后,只需将新项添加到视图模型中的列表中 使用CompositeCollection,这样您就可以在不修改实际集合的情况下拥有附加项 通常情况下,您会选择1,但由于您希望单击以添加更
它起作用了。但我的问题是,如何在绑定后将自己的项目(例如“单击以添加更多”)添加到此项目控件?此问题有两个答案: 使用ObservableCollection而不是List,因为它会在添加/删除项时通知UI。然后,只需将新项添加到视图模型中的列表中 使用CompositeCollection,这样您就可以在不修改实际集合的情况下拥有附加项 通常情况下,您会选择1,但由于您希望单击以添加更多类型的选项,因此CompositeCollection可能是一种选择
由于您遇到了windows phone,但标记了WPF,因此您可能想看看这篇文章,了解如何编写自己的CompositeCollection对象:这个问题有两个答案: 使用ObservableCollection而不是List,因为它会在添加/删除项时通知UI。然后,只需将新项添加到视图模型中的列表中 使用CompositeCollection,这样您就可以在不修改实际集合的情况下拥有附加项 通常情况下,您会选择1,但由于您希望单击以添加更多类型的选项,因此CompositeCollection可能是一种选择 由于您使用了windows phone,但标记了WPF,因此您可能想看看这篇文章,了解如何编写自己的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>
使用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>
在代码隐藏中添加到MyCollections。也可以使用System.Collections.ObjectModel.ObservableCollection而不是List。它将自动更新控件。在代码隐藏中添加到MyCollections。也可以使用System.Collections.ObjectModel.ObservableCollection代替列表。它将自动更新控件。谢谢。我尝试了可观察的收集。我在private async void NavigationHelper\u LoadStateobject发送者LoadStateEventArgs e中将新项添加到它。但是当我在这个页面之间来回移动时,我看到越来越多的项目被添加到列表中。有更好的地方吗?@hap497我会在加载初始集合时将其添加到视图模型中。谢谢。我尝试了可观察的收集。我在private async void NavigationHelper\u LoadStateobject发送者LoadStateEventArgs e中将新项添加到它。但是当我在这个页面之间来回移动时,我看到越来越多的项目被添加到列表中。有更好的地方吗?@hap497我会在加载初始集合时将其添加到视图模型中。