Files
IOT/MainModule/ViewModels/PostDetailViewModel.cs
2026-01-14 15:32:10 +08:00

138 lines
4.6 KiB
C#

using Model.Entity;
using Prism.Commands;
using Prism.Ioc;
using Service.Interface;
using System.Windows.Input;
using UIShare.ViewModelBase;
namespace MainModule.ViewModels
{
public class PostDetailViewModel : NavigateViewModelBase
{
#region
private PostEntity _selectedPost;
public PostEntity SelectedPost
{
get => _selectedPost;
set => SetProperty(ref _selectedPost, value);
}
#endregion
#region
public ICommand LikePostCommand { get; set; }
public ICommand FavoritePostCommand { get; set; }
public ICommand SharePostCommand { get; set; }
#endregion
#region
private IContainerProvider _containerProvider;
private IPostService _postService;
private IDialogService _dialogService;
#endregion
public PostDetailViewModel(IContainerProvider containerProvider) : base(containerProvider)
{
_containerProvider = containerProvider;
_postService = containerProvider.Resolve<IPostService>();
_dialogService = containerProvider.Resolve<IDialogService>();
InitializeCommands();
}
private void InitializeCommands()
{
LikePostCommand = new DelegateCommand(OnLikePost);
FavoritePostCommand = new DelegateCommand(OnFavoritePost);
SharePostCommand = new DelegateCommand(OnSharePost);
}
#region
private async void OnLikePost()
{
if (SelectedPost != null)
{
SelectedPost.LikeCount++;
// 在实际应用中,这里应该调用服务更新数据库
var result = await _postService.UpdatePostAsync(SelectedPost);
if (!result.IsSuccess)
{
var dialogParams = new DialogParameters();
dialogParams.Add("Title", "错误");
dialogParams.Add("Message", "点赞失败" + result.Msg);
dialogParams.Add("Icon", "error");
dialogParams.Add("ShowOk", true);
_dialogService.ShowDialog("MessageBox", dialogParams);
}
}
}
private async void OnFavoritePost()
{
if (SelectedPost != null)
{
var dialogParams = new DialogParameters();
dialogParams.Add("Title", "提示");
dialogParams.Add("Message", "帖子已收藏");
dialogParams.Add("Icon", "info");
dialogParams.Add("ShowOk", true);
_dialogService.ShowDialog("MessageBox", dialogParams, result =>
{
if (result.Result == ButtonResult.OK)
{
// 用户点击了确定
}
});
}
}
private async void OnSharePost()
{
if (SelectedPost != null)
{
var dialogParams = new DialogParameters();
dialogParams.Add("Title", "提示");
dialogParams.Add("Message", "分享功能待实现");
dialogParams.Add("Icon", "info");
dialogParams.Add("ShowOk", true);
_dialogService.ShowDialog("MessageBox", dialogParams, result =>
{
if (result.Result == ButtonResult.OK)
{
// 用户点击了确定
}
});
}
}
#endregion
#region
public async void LoadPostDetails(PostEntity post)
{
if (post != null)
{
SelectedPost = post;
// 增加浏览量
SelectedPost.ViewCount++;
// 在实际应用中,这里应该调用服务更新数据库
var result = await _postService.UpdatePostAsync(SelectedPost);
if (!result.IsSuccess)
{
var dialogParams = new DialogParameters();
dialogParams.Add("Title", "错误");
dialogParams.Add("Message", "加载帖子详情失败" + result.Msg);
dialogParams.Add("Icon", "error");
dialogParams.Add("ShowOk", true);
_dialogService.ShowDialog("MessageBox", dialogParams);
}
}
}
#endregion
}
}