Example #1
0
 void Selected_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
 {
     if (e.PropertyName == "IsSelected")
     {
         _isAnySelected = AllOptions.Any(o => o.IsSelected) && AllCentres.Any(o => o.IsSelected);
     }
 }
Example #2
0
        public SelectDataRequiredOptionsViewModel(IRepository _repo, IEnumerable <DataRequiredOption> selectedDataRequired = null, IEnumerable <StudyCentreModel> centres = null)
        {
            var options = Enum.GetValues(typeof(DataRequiredOption)).Cast <DataRequiredOption>()
                          .Where(d => d != DataRequiredOption.NotSet).ToList();

            AllOptions = selectedDataRequired == null
                ?options.Select(dro => new DataRequiredOptionsViewModel(dro)
            {
                IsSelected = true
            })
                         .ToList()
                :options.Select(dro => new DataRequiredOptionsViewModel(dro)
            {
                IsSelected = selectedDataRequired.Contains(dro)
            })
                         .ToList();

            AllCentres = centres == null
                ? _repo.LocalStudyCentres.Select(c => new StudyCentreOptionsViewModel(c)
            {
                IsSelected = true
            }).ToArray()
                : _repo.LocalStudyCentres.Select(c => new StudyCentreOptionsViewModel(c)
            {
                IsSelected = centres.Contains(c)
            }).ToArray();

            _isAnySelected = true;

            foreach (var o in AllOptions)
            {
                o.PropertyChanged += Selected_PropertyChanged;
            }

            foreach (var c in AllCentres)
            {
                c.PropertyChanged += Selected_PropertyChanged;
            }

            WasCancelled = true;

            MultiCentreOption = AllCentres.Skip(1).Any();

            SelectAll = new RelayCommand(p =>
            {
                foreach (var o in AllOptions)
                {
                    o.IsSelected = true;
                }
                foreach (var c in AllCentres)
                {
                    c.IsSelected = true;
                }
            });

            UnselectAll = new RelayCommand(p =>
            {
                foreach (var o in AllOptions)
                {
                    o.IsSelected = false;
                }
                foreach (var c in AllCentres)
                {
                    c.IsSelected = false;
                }
            });

            Close = new RelayCommand(p => RequestClose(this, new EventArgs()));

            Apply = new RelayCommand(p =>
            {
                WasCancelled = false;
                Close.Execute(null);
            }, p => _isAnySelected);
        }