2016-08-24 47 views
0

我的应用程序根据用户选择在其他地方更改了ListBox的内容。最终,这个列表也会被过滤。我想使用CollectionViewSource来帮助管理ListBox中的项目。我将项目添加到ObservableCollection,但没有看到ListBox中的任何项目。如何使用CollectionViewSource更新列表框

这里的XAML:

<Window.Resources> 
    <ResourceDictionary> 
     ... 
     <CollectionViewSource x:Key="DataFileView" Source="DataFilesCollection"/> 
    </ResourceDictionary> 
</Window.Resources> 

... 

<ListBox x:Name="FileList" ItemsSource="{Binding Source={StaticResource DataFileView}}" 
     Grid.Column="2" SelectionMode="Single" SelectionChanged="DataFile_Select"> 
    <ListBox.ItemTemplate> 
     <DataTemplate DataType="{x:Type self:ExploreDataItem}"> 
      <TextBlock Text="{Binding DisplayText}" /> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

DataFilesCollectionObservableCollection<ExploreDataItem>

回答

0

我想你忘了把Binding加到CollectionViewSource的来源。我在代码中找不到任何其他错误。一切似乎都是对的。希望你的DataFilesCollection也不是空的。

见下文纠正代码:

<CollectionViewSource x:Name="DataFileView" Source="{Binding DataFilesCollection}" /> 
+0

不幸的是,仍然没有骰子。该集合中有100个元素。还有其他建议吗? – tyson

+0

如果您可以显示可测试的完整代码,则可以检查。 – ViVi

+0

问题是我没有正确设置DataContext。谢谢你的帮助。 – tyson