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

156 lines
4.5 KiB
C#

using Model.Entity;
using Prism.Commands;
using Prism.Ioc;
using Service.Interface;
using System.Collections.ObjectModel;
using System.Windows.Input;
using UIShare.ViewModelBase;
namespace MainModule.ViewModels
{
public class MainViewModel : NavigateViewModelBase
{
#region
private ObservableCollection<PostEntity> _posts;
public ObservableCollection<PostEntity> Posts
{
get => _posts;
set => SetProperty(ref _posts, value);
}
private string _searchKeyword;
public string SearchKeyword
{
get => _searchKeyword;
set => SetProperty(ref _searchKeyword, value);
}
#endregion
#region
public ICommand CreatePostCommand { get; set; }
public ICommand SearchCommand { get; set; }
public ICommand CategorySelectCommand { get; set; }
#endregion
#region
private IContainerProvider _containerProvider;
private IPostService _postService;
private IDialogService _dialogService;
#endregion
public MainViewModel(IContainerProvider containerProvider ) : base(containerProvider)
{
_containerProvider=containerProvider;
_postService = containerProvider.Resolve<IPostService>();
_dialogService = containerProvider.Resolve<IDialogService>();
InitializeCommands();
LoadPosts();
}
private void InitializeCommands()
{
CreatePostCommand = new DelegateCommand(OnCreatePost);
SearchCommand = new AsyncDelegateCommand(OnSearch);
CategorySelectCommand = new AsyncDelegateCommand<string>(OnCategorySelect);
}
#region
private async void OnCreatePost()
{
// 这里可以导航到发帖页面
ShowInfoMessageBox("跳转到发帖页面",null);
}
private async Task OnSearch()
{
// 执行搜索逻辑
if (!string.IsNullOrWhiteSpace(SearchKeyword))
{
await SearchPostsAsync(SearchKeyword);
}
}
private async Task OnCategorySelect(string category)
{
// 按分类筛选帖子
await FilterPostsByCategoryAsync(category);
}
#endregion
#region
private async Task LoadPosts()
{
try
{
var result = await _postService.GetRecommendedPostsAsync(20);
if (result.IsSuccess)
{
Posts = new ObservableCollection<PostEntity>(result.Data);
}
else
{
ShowErrorMessageBox("帖子加载错误",null);
}
}
catch (Exception ex)
{
ShowErrorMessageBox($"加载帖子异常: {ex.Message}", null);
}
}
private async Task SearchPostsAsync(string keyword)
{
try
{
var result = await _postService.SearchPostsAsync(keyword);
if (result.IsSuccess)
{
Posts = new ObservableCollection<PostEntity>(result.Data);
}
else
{
ShowErrorMessageBox("查询帖子失败", null);
}
}
catch (Exception ex)
{
// 处理异常
ShowErrorMessageBox($"查询帖子异常: {ex.Message}", null);
}
}
private async Task FilterPostsByCategoryAsync(string category)
{
if (category == "全部")
{
await LoadPosts(); // 重新加载所有帖子
return;
}
try
{
var result = await _postService.GetPostsByCategoryAsync(category, 20);
if (result.IsSuccess)
{
Posts = new ObservableCollection<PostEntity>(result.Data);
}
else
{
ShowErrorMessageBox("加载分类子失败", null);
}
}
catch (Exception ex)
{
ShowErrorMessageBox($"获取分类帖子异常: {ex.Message}", null);
}
}
#endregion
}
}