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.

75 lines
2.0 KiB
C#

using Prism.Commands;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
using Txgy.EWS.Client.IBLL;
using Txgy.EWS.Client.Models;
namespace BaseModule.ViewModels
{
public class SelectUserDialogViewModel : IDialogAware
{
public string Title => "选择用户";
public event Action<IDialogResult> RequestClose;
public bool CanCloseDialog() => true;
public void OnDialogClosed() { }
public void OnDialogOpened(IDialogParameters parameters)
{
_userIds = parameters.GetValue<List<int>>("ids");
}
List<int> _userIds;
public ObservableCollection<UserInfoModel> Users { get; set; } = new ObservableCollection<UserInfoModel>();
IUserBLL _userBLL;
public SelectUserDialogViewModel(IUserBLL userBLL)
{
_userBLL = userBLL;
this.InitUsers();
}
private async void InitUsers()
{
var users = await _userBLL.GetAll();
users.Where(u => !_userIds.Contains(u.UserId)).ToList().
ForEach(u => Users.Add(new UserInfoModel
{
UserId = u.UserId,
UserName = u.UserName,
RealName = u.RealName
}));
}
public ICommand ConfirmCommand
{
get => new DelegateCommand(() =>
{
// 返回选中用户
DialogParameters param = new DialogParameters();
param.Add("users", Users.Where(u => u.IsSelected).ToList());
RequestClose?.Invoke(new DialogResult(ButtonResult.OK, param));
});
}
public ICommand CancelCommand
{
get => new DelegateCommand(() =>
{
RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel));
});
}
}
}