Заранее прошу прощения за мой английский и если я недостаточно подробно описал проблему .
У меня есть простая реализация MVVM с коллекцией, которая загружает сгруппированные объекты. Я также использовал DynamicData (https://dynamic-data.org/) для работы с коллекциями. Ниже приведен весь код приложения:
Код: Выделить всё
public class ChatMessage
{
public long Id { get; set; }
public long Sender { get; set; }
public long Receiver { get; set; }
public string Content { get; set; }
public DateTime Timestamp { get; set; }
public bool Read { get; set; }
public bool Delivered { get; set; }
}
Код: Выделить всё
[*]
Код: Выделить всё
public class ChatViewModel : AbstractNotifyPropertyChanged
{
private readonly SourceCache _sourceList = new SourceCache(m => m.Id);
public ObservableCollectionExtended GroupedMessages { get; } = new ObservableCollectionExtended();
public ChatViewModel()
{
// Load test messages
GetTestMessages();
_sourceList
.Connect()
.Group(msg => msg.Timestamp.Date)
.Transform(group => new GroupAdapter(group))
.Bind(GroupedMessages)
.Subscribe();
}
private void GetTestMessages()
{
var messages = new[]
{
new ChatMessage { Id = 1, Sender = 1, Receiver = 2, Content = "Hi!", Timestamp = DateTime.Now.AddDays(-1) },
new ChatMessage { Id = 2, Sender = 2, Receiver = 1, Content = "Hi, how are you ?", Timestamp = DateTime.Now.AddDays(-3).AddHours(1) },
new ChatMessage { Id = 3, Sender = 1, Receiver = 2, Content = "I'm fine!", Timestamp = DateTime.Now },
new ChatMessage { Id = 4, Sender = 2, Receiver = 1, Content = "Nice!", Timestamp = DateTime.Now },
};
foreach (var message in messages)
_sourceList.AddOrUpdate(message);
}
}
Код: Выделить всё
public class GroupAdapter : IGrouping
{
private readonly IGroup _group;
public GroupAdapter(IGroup group)
{
_group = group;
}
public DateTime Key => _group.Key;
public IEnumerator GetEnumerator() => _group.Cache.Items.GetEnumerator();
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}
Как видно выше, я реализовал интерфейс IGrouping в GroupAdapter, надеясь, что это поможет. Однако я столкнулся со следующими проблемами:
- Заголовок группы не отображается.
- Если к одной группе принадлежит несколько объектов, отображается только первый.

Что я делаю неправильно? Буду признателен за любую помощь.
Подробнее здесь: https://stackoverflow.com/questions/791 ... istbox-wpf
Мобильная версия