EmptySortDescriptionCollection with SortDescriptions



我即将对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));

BindDesignICItemsControl,直接绑定ObservableCollection可以正常运行。

然而,在上面的代码运行之后,它报告了这个错误:

系统。NotSupportedException
HResult=0x80131515
Message=指定的方法不支持。源= WindowsBase

StackTrace:
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));

相关内容

  • 没有找到相关文章

最新更新