您好我在ListBox控件上绑定了来自Caliburn Micro的集合。就是这样。
public BindableCollection<UserInfo> Friends
{
get { return _friends; }
set
{
_friends = value;
NotifyOfPropertyChange(() => Friends);
}
}
ListBox项是UserInfo的类型。
您好我对列表框项目进行排序和分组,我使用了CollectioView。
初始化ListBox时,我使用此方法对项目进行排序和分组。
private ICollectionView _currentView;
//...
private void SortContactList()
{
_currentView = CollectionViewSource.GetDefaultView(Friends);
_currentView.GroupDescriptions.Add(new PropertyGroupDescription("TextStatus"));
_currentView.SortDescriptions.Add(new SortDescription("TextStatus", ListSortDirection.Ascending));
_currentView.SortDescriptions.Add(new SortDescription("Nick", ListSortDirection.Ascending));
}
TextStatus和Nick是userInfo类的属性。
当我更新可绑定集合中的项目值时,我想知道如何通知集合查看此更改。因为我需要将项目移动到右边/好组。
例如
Friend[0].TextStatus = "Ofline" -> is in offline group
我改变了网上的价值;
Friend[0].TextStatus="Online" -> move in online group
在这里我想要关于Friends集合的更改的通知集合视图(_currentView)。
答案 0 :(得分:2)
当我创建一个包含Rating列的表的应用程序时,我遇到了同样的问题。
我想知道为什么当我改变评级时行不会向上移动,最后我使用Refresh
方法。
对于你的例子:
Friend[0].TextStatus="Online" -> move in online group
_currentView.Refresh();
幸运的是,没有出现性能问题,所以现在我在类似情况下使用此解决方案。