public void Load(IChoice choice) { if (choice == null) { throw new ArgumentNullException("choice"); } this.choice = choice; this.payment = null; this.choiceViewModel = new ChoiceItemViewModel(this.Dispatcher, choice); this.isValid = false; this.isCancelled = false; this.statusText.Text = string.Empty; choiceContainer.DataContext = choiceViewModel; choiceChildrenContainer.ItemsSource = choiceViewModel.Children; var questionViewModel = choiceViewModel.Children.FirstOrDefault(); if (questionViewModel == null) { return; } if (!HasMultipleDescendants(questionViewModel)) { ChooseRequiredAnswers(questionViewModel); } }
private void ChooseParent(ChoiceItemViewModel viewModel) { if (viewModel.Parent == null) { return; } viewModel.Parent.IsChosen = true; ChooseParent(viewModel.Parent); }
private void ChooseRequiredAnswers(ChoiceItemViewModel viewModel) { if (viewModel.Children.Count() != 1) { return; } var first = viewModel.Children.First(); first.IsChosen = true; ChooseParent(first); var childOfFirst = first.Children.FirstOrDefault(); if (childOfFirst != null) { ChooseRequiredAnswers(childOfFirst); } }
private bool HasMultipleDescendants(ChoiceItemViewModel viewModel) { var count = viewModel.Children.Count(); if (count == 0) { return(false); } else if (count == 1) { var first = viewModel.Children.First(); var childOfFirst = first.Children.FirstOrDefault(); if (childOfFirst != null) { return(HasMultipleDescendants(childOfFirst)); } return(false); } else { return(true); } }