C# 一个控件的多个ItemSource

C# 一个控件的多个ItemSource,c#,wpf,xaml,C#,Wpf,Xaml,我有一个列表框#1,下面有多个文本块项目模板: <ListBox Grid.Row="2" x:Name="ItemListBox" ItemsSource="{Binding Files}" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.HorizontalScrollBarVisib

我有一个列表框#1,下面有多个文本块项目模板:

<ListBox Grid.Row="2"
         x:Name="ItemListBox"                             
         ItemsSource="{Binding Files}"
         ScrollViewer.VerticalScrollBarVisibility="Auto"
         ScrollViewer.HorizontalScrollBarVisibility="Auto"                                                       
         ScrollViewer.CanContentScroll="True"                             
         AlternationCount="2"
         SelectedItem="{Binding FileSelectedItem, Mode=TwoWay}"
         BorderThickness="1">

我有另一个列表框#2,用于拖放绑定到存储数据的可观察集合的文件

 <ListBox ItemsSource="{Binding Path=DropFiles}" 
                       Grid.Row="5" Name="DropBox"
                       AllowDrop="True"                     
                       BorderThickness="1"
                       AlternationCount="2"
                       DragOver="DropBox_DragOver"
                       DragLeave="DropBox_DragLeave" 
                       Drop="DropBox_Drop" >
            </ListBox>


我想在一个listbox上实现所有功能,所以基本上去掉第二个listbox,我可以将te DragOver、DragLeave和Drop属性移动到第一个listbox,但是第二个listbox的DropFiles ItemsSource属性有问题!任何回复或建议,谢谢

您只能将
ItemsSource
绑定到单个集合

我建议在视图模型上添加一个属性来公开这个合并的集合,并在绑定中使用该属性


否则,如果
Files
DropFiles
是同一项上的属性,则可以创建一个转换器来接受VM类并生成一个合并的集合。生成一个可观察的集合将取决于您。

您是否试图同时将一个列表框绑定到两个集合——一个来自“文件”绑定,另一个来自“DropFiles”绑定?是的,这是正确的!基本上保持ListBox#1不变,但将拖放功能从第二个移动到第一个。