Ela*_*esh 4 .net c# wpf xaml observablecollection
我有以下代码
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var entities = new DemoEntities();
var depts = entities.Depts.ToList(); // entity framwork dept table
CollectionViewSource cvs = (CollectionViewSource)CollectionViewSource.GetDefaultView(depts);
}
}
Run Code Online (Sandbox Code Playgroud)
我的目的是在XAML中将此集合绑定到以下窗口资源
<Window.Resources>
<CollectionViewSource x:Key="Departments"/>
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)
运用
CollectionViewSource collectionViewSource = this.FindResource("Departments") as CollectionViewSource;
Run Code Online (Sandbox Code Playgroud)
但是在执行以下代码行时
CollectionViewSource cvs =(CollectionViewSource)CollectionViewSource.GetDefaultView(depts);
它抛出一个异常,并且该异常的内部异常正在跟随
{"Unable to cast object of type 'System.Windows.Data.ListCollectionView' to type 'System.Windows.Data.CollectionViewSource'."}
Run Code Online (Sandbox Code Playgroud)
有人可以通过提供如何使用代码创建CollectionViewSource来帮助我吗?
CollectionViewSource.GetDefaultView(depts)返回一个ICollectionView.CollectionViewSource主要是ICollectionView根据所提供的集合确定使用何种类型的方法.
如果你真的想创建一个CollectionViewSource,你可能会这样做:
var collectionViewSource = new CollectionViewSource();
collectionViewSource.Source = depts;
Run Code Online (Sandbox Code Playgroud)
但我确实相信你想要实现的目标可以更好地完成.例如:
var collectionViewSource = this.FindResource("Departments") as CollectionViewSource;
collectionViewSource.Source = depts;
Run Code Online (Sandbox Code Playgroud)