如何将多个项目添加到ItemsSource WPF多集合绑定中

本文关键字:WPF ItemsSource 集合 绑定 添加 项目 | 更新日期: 2023-09-27 18:28:36

我已经在ItemsSource中添加了一个项目,这是一个文件夹路径,所有图像都将添加到ListBox中,但我想使用相同的ItemsSource将更多项目添加到现有的ListBox中。如何做到这一点?

List<string> folders = new List<string>();
    private void ComboBox1_Loaded(object sender, RoutedEventArgs e)
    {
folders.AddRange(Directory.EnumerateFiles(@"C:'Users'images1", "*.*").ToList());
        imageItems.ItemsSource = folders;            
    } 
    private void ComboBox2_Loaded(object sender, RoutedEventArgs e)
    {
folders.AddRange(Directory.EnumerateFiles(@"C:'Users'images2", "*.*").ToList());
        imageItems.ItemsSource = folders;        
    } 
    <ListBox x:Name="imageItems" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel IsItemsHost="True" />
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Image Source="{Binding}" Width="120" Height="120"/>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ListBox>

但只有ComboBox2_Loaded项目被添加并显示,而不是ComboBox1_Loaded我怎样才能同时得到这两样东西?

如何将多个项目添加到ItemsSource WPF多集合绑定中

您需要创建一个可以更改的列表,以便将文件名存储在:中

ObservableCollection<string> folders = new ObservableCollection<string>();

从那里,你可以添加和删除所有你想要的项目:

imageItems.ItemsSource = folders;
foreach (string file in Directory.EnumerateFiles(@"C:'Users'images1", "*.*"))
{
    folders.Add(file);
}
foreach (string file in Directory.EnumerateFiles(@"C:'Users'images2", "*.*"))
{
    folders.Add(file);
}