public UserManagerViewmodel(IAuthenticationService authenticationService) { _authenticationService = authenticationService; Groups = new ObservableCollection <GroupViewmodel>(authenticationService.Groups.Select(g => { var newVm = new GroupViewmodel(g); newVm.Load(); return(newVm); })); Users = new ObservableCollection <UserViewmodel>(authenticationService.Users.Select(u => { var newVm = new UserViewmodel(u, this); newVm.Load(); return(newVm); })); CommandAddUser = new UICommand { ExecuteDelegate = AddUser }; CommandDeleteUser = new UICommand { ExecuteDelegate = DeleteUser, CanExecuteDelegate = CanDeleteUser }; CommandAddGroup = new UICommand { ExecuteDelegate = AddGroup }; CommandDeleteGroup = new UICommand { ExecuteDelegate = DeleteGroup, CanExecuteDelegate = CanDeleteGroup }; authenticationService.UsersOperation += AuthenticationService_UsersOperation; authenticationService.GroupsOperation += AuthenticationService_GroupsOperation; }
private void AddUser(object obj) { var newUserVm = new UserViewmodel(_authenticationService.CreateUser(), this); Users.Add(newUserVm); SelectedUser = newUserVm; }
private void AuthenticationService_UsersOperation(object sender, CollectionOperationEventArgs <IUser> e) { Application.Current.Dispatcher.BeginInvoke((Action) delegate { var vm = Users.FirstOrDefault(u => u.Model == e.Item); if (e.Operation == CollectionOperation.Add) { if (vm == null) { vm = new UserViewmodel(e.Item, this); vm.Load(); Users.Add(vm); } } else { if (vm != null) { Users.Remove(vm); vm.Dispose(); } } }); }