You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
1.9 KiB
C#
80 lines
1.9 KiB
C#
using AI.Models;
|
|
|
|
namespace AI.ViewModels
|
|
{
|
|
/// <summary>
|
|
/// 会话列表项的 ViewModel
|
|
/// </summary>
|
|
public class ChatSessionItemViewModel : ViewModelBase
|
|
{
|
|
private readonly ChatSession _session;
|
|
private bool _isSelected;
|
|
|
|
public ChatSessionItemViewModel(ChatSession session)
|
|
{
|
|
_session = session ?? throw new ArgumentNullException(nameof(session));
|
|
}
|
|
|
|
/// <summary>
|
|
/// 会话ID
|
|
/// </summary>
|
|
public string Id => _session.Id;
|
|
|
|
/// <summary>
|
|
/// 会话标题
|
|
/// </summary>
|
|
public string Title
|
|
{
|
|
get => _session.Title;
|
|
set
|
|
{
|
|
if (_session.Title != value)
|
|
{
|
|
_session.Title = value;
|
|
OnPropertyChanged();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 创建时间
|
|
/// </summary>
|
|
public DateTime CreatedAt => _session.CreatedAt;
|
|
|
|
/// <summary>
|
|
/// 最后更新时间
|
|
/// </summary>
|
|
public DateTime UpdatedAt => _session.UpdatedAt;
|
|
|
|
/// <summary>
|
|
/// 消息数量
|
|
/// </summary>
|
|
public int MessageCount => _session.MessageCount;
|
|
|
|
/// <summary>
|
|
/// 是否被选中
|
|
/// </summary>
|
|
public bool IsSelected
|
|
{
|
|
get => _isSelected;
|
|
set => SetProperty(ref _isSelected, value);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取底层会话对象
|
|
/// </summary>
|
|
public ChatSession Session => _session;
|
|
|
|
/// <summary>
|
|
/// 更新显示信息(当会话变化时调用)
|
|
/// </summary>
|
|
public void Refresh()
|
|
{
|
|
OnPropertyChanged(nameof(Title));
|
|
OnPropertyChanged(nameof(UpdatedAt));
|
|
OnPropertyChanged(nameof(MessageCount));
|
|
}
|
|
}
|
|
}
|
|
|