绑定到ObservableCollection工作,但不是ListCollectionView

时间:2017-03-07 23:21:19

标签: c# wpf observablecollection listcollectionview

我试图让我的<canvas id="canvas" width="200" height="200"></canvas>绑定到一个组合框。但是,它似乎仅在我绑定到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}"/> 后,我尝试在SitesCollectionListCollectionView上提出属性更改通知,但它没有做出改变。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

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

尝试将SitesView设置为SourceCollection的{​​{1}}。

DefaultView