与ObservableCollection结合起来,但不能结合ListCollectionView



我正在尝试使我的 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后,我尝试在ListCollectionViewObservableCollection上提出属性更改通知,并且没有区别。有什么想法吗?

我没有时间测试我的答案;我道歉并将跟进。

我认为您的问题是因为CollectionViewSource.GetDefaultView(...) 返回ICollectionView,我认为这实际上只是一个包装器,可以对基础数据进行排序。

尝试将SitesView设置为DefaultViewSourceCollection

SitesView = (ListCollectionView)CollectionViewSource.GetDefaultView(SitesCollection).SourceCollection

相关内容

最新更新