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 _posts; public ObservableCollection 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(); _dialogService = containerProvider.Resolve(); InitializeCommands(); LoadPosts(); } private void InitializeCommands() { CreatePostCommand = new DelegateCommand(OnCreatePost); SearchCommand = new AsyncDelegateCommand(OnSearch); CategorySelectCommand = new AsyncDelegateCommand(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(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(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(result.Data); } else { ShowErrorMessageBox("加载分类子失败", null); } } catch (Exception ex) { ShowErrorMessageBox($"获取分类帖子异常: {ex.Message}", null); } } #endregion } }