如何在绑定后向ItemsControl添加更多项目

时间:2014-10-02 17:45:56

标签: c# wpf

在我的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添加到我自己的项目(例如“点击添加更多”)?

2 个答案:

答案 0 :(得分:3)

这个问题有两个答案:

  1. 使用ObservableCollection代替List,因为它会在添加/删除项目时通知用户界面。然后,您只需将新项目添加到视图模型中的列表中。

  2. 使用CompositeCollection,这样您就可以获得&#34;额外的&#34;没有修改实际集合的项目。

  3. 通常你会做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>