こんにちは私はビューのリストボックスコントロールでCaliburnMicroからのコレクションをバインドします。はい、これ。
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
ここで、Friendsコレクションの変更についてコレクションビュー(_currentView)に通知します。