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.
kev/Drawer/AI/ViewModels/ChatSessionItemViewModel.cs

80 lines
1.9 KiB
C#

1 month ago
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));
}
}
}