2016-01-01 98 views
0

我已將單個項目添加到ItemsSource這是一個文件夾路徑,所有圖像將被添加到ListBox但我想添加更多的項目到現有的ListBox使用相同的ItemsSource如何做到這一點?如何將多個項目添加到ItemsSource WPF多個集合綁定?

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> 

但只有項被添加並顯示沒有ComboBox1_Loaded 我怎樣才能得到這兩個項目?

+1

不是List 的''使用'ObsevableCollection ',它實現'INotifyCollectionChanged'接口。它沒有'AddRange'所以將需要一個 – dkozl

+1

添加的項目之一創建'folders'只有一次,因爲那麼你只改變,因爲該清單和項目'imageItems.ItemsSource = folders'並沒有影響,因爲它是還是同樣的名單。如果不重新創建列表,你需要列出其當藏品已經改變,'ObsevableCollection 通知UI'正是這麼做的 – dkozl

+0

感謝你的答案:) – Neo

回答

1

你需要創建一個可以改變你的文件名存儲在一個列表:

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); 
} 
+0

是的,我也一樣,但如果兩者是分開的這是行不通的:(補充文件,但不顯示。更新問題 – Neo

+1

我的錯誤,你需要使用一個ObservableCollection來代替。我會更新我的答案。此外,你只需要設置的ItemsSource一次。 – Tim

+0

完美非常感謝:) – Neo

相關問題