1

嗨,我在视图中的 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 中项目的值时,我想有一种方法如何通知集合视图有关此更改。因为我需要将项目移动到正确/好组。

例如

Friend[0].TextStatus = "Ofline" -> is in offline group

我在网上改变价值;

Friend[0].TextStatus="Online" -> move in online group

在这里我想通知集合视图(_currentView)关于朋友集合的变化。

4

1 回答 1

2

当我创建一个包含 Rating 列的表的应用程序时,我遇到了同样的问题。我想知道为什么当我改变评级时行没有上移,最后我使用了这个Refresh方法。

对于您的示例:

Friend[0].TextStatus="Online" -> move in online group
_currentView.Refresh();

幸运的是,没有出现性能问题,所以现在我在类似的情况下使用了这个解决方案。

于 2011-02-14T14:26:57.183 回答