我即将对EF Core在代码后(而不是前端)检索的数据库中的ObservableCollection
进行排序。
下面是模型的类:
public class BindDesignModel : INotifyPropertyChanged
{
[Key]
public string id { get; set; }
string _code;
public string code
{
get => _code; set
{
_code = value;
OnPropertyChanged();
}
}
public string DesignFileName { get; set; }
string _name;
[NotMapped]
public string name
{
get => _name;
set
{
_name = value;
OnPropertyChanged();
}
}
[NotMapped]
public Boolean IsBinded => !string.IsNullOrEmpty(code);
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string name = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
}
属性IsBinded
仅用于对ObservableCollection
进行排序。
这里是代码
Database.Context Context = new Database.Context();
CollectionView CV = new CollectionView(Context.BindDesign.Local.ToObservableCollection());
BindDesignIC.ItemsSource = CV;
CV.SortDescriptions.Add(new SortDescription("IsBinded", ListSortDirection.Ascending));
BindDesignIC
是ItemsControl
,直接绑定ObservableCollection
可以正常运行。
系统。NotSupportedException
HResult=0x80131515
Message=指定的方法不支持。源= WindowsBaseStackTrace:
at System.ComponentModel.SortDescriptionCollection.EmptySortDescriptionCollection。InsertItem(Int32 index, SortDescription item)
我的代码有什么问题?谢谢你。
不要显式地创建CollectionView
。
WPF为您创建了一个,您可以使用CollectionViewSource.GetDefaultView
方法获取对它的引用:
dg.ItemsSource = Context.BindDesign.Local.ToObservableCollection();
ICollectionView CV = CollectionViewSource.GetDefaultView(dg.ItemsSource);
CV.SortDescriptions.Add(new SortDescription("IsBinded", ListSortDirection.Ascending));