我正在尝试使我的 ListCollectionView
绑定到组合框。但是,它似乎只有在我绑定到我的ObservableCollection
时才起作用。
属性:
private ListCollectionView sitesView;
public ListCollectionView SitesView
{
get { return sitesView; }
set
{
sitesView = value;
RaisePropertyChanged(() => SitesView);
}
}
public ObservableCollection<ISite> SitesCollection { get; set; }
构造函数:
SitesCollection = new ObservableCollection<ISite>();
SitesView = (ListCollectionView)CollectionViewSource.GetDefaultView(SitesCollection);
像这样绑定时:
<ComboBox Grid.Row="2" ItemsSource="{Binding SitesView, Mode=TwoWay}"/>
当我单击组合框中的下拉纸时,我添加到SitesCollection
中的任何项目都不会显示。但是,如果我像这样进行绑定:
<ComboBox Grid.Row="2" ItemsSource="{Binding SitesCollection, Mode=TwoWay}"/>
它可以正常工作,当我单击下拉列表时,我会看到这些项目。
尝试修复:将项目添加到SitesCollection
后,我尝试在ListCollectionView
和ObservableCollection
上提出属性更改通知,并且没有区别。有什么想法吗?
我没有时间测试我的答案;我道歉并将跟进。
我认为您的问题是因为CollectionViewSource.GetDefaultView(...)
返回ICollectionView
,我认为这实际上只是一个包装器,可以对基础数据进行排序。
尝试将SitesView
设置为DefaultView
的SourceCollection
。
SitesView = (ListCollectionView)CollectionViewSource.GetDefaultView(SitesCollection).SourceCollection