Exemplo n.º 1
0
        private void buildEntities(Func <IEnumerable <FeatViewEntity> > builder)
        {
            viewModel.Feats?.ForEach(r => r.PropertyChanged -= onFeatViewEntityPropertyChanged);

            viewModel.Feats = new ObservableCollection <FeatViewEntity>(builder());

            viewModel.Feats.Traverse().ForEach(r => r.PropertyChanged += onFeatViewEntityPropertyChanged);

            FeatViewEntity entity = viewModel.Feats.FirstOrDefault(fe => !fe.IsParentHeader);

            if (entity != null)
            {
                entity.IsSelected = true;
            }
        }
Exemplo n.º 2
0
        private void onFeatViewEntityPropertyChanged(object sender, PropertyChangedEventArgs args)
        {
            if (isSelf)
            {
                return;
            }

            if (!(sender is FeatViewEntity entity))
            {
                return;
            }

            switch (args.PropertyName)
            {
            case "IsSelected": {
                if (entity.IsSelected)
                {
                    if (entity.IsParentHeader)
                    {
                        isSelf = true;

                        entity.IsSelected = false;

                        lastSelected.IsSelected = true;

                        isSelf = false;

                        entity = lastSelected;
                    }

                    viewModel.Selected = entity;

                    viewModel.Feats.Traverse(fe => true).Where(c => c != entity).ForEach(c => c.IsSelected = false);
                }
                else
                {
                    lastSelected = entity;
                }

                break;
            }
            }
        }