public QuestionDialog(ISemanticNetwork semanticNetwork, ILanguage language, IViewModelFactory viewModelFactory) { _language = language; _viewModelFactory = viewModelFactory; InitializeComponent(); var localizationProvider = (ObjectDataProvider)Resources["language"]; localizationProvider.ConstructorParameters.Add(_language); ((NamedConverter)Resources["namedConverter"]).Language = _language; Title = _language.GetExtension <IWpfUiModule>().Ui.QuestionDialog.Title; panelSelectQuestion.DataContext = Question = null; panelSelectQuestion.Visibility = Visibility.Visible; panelQuestionParams.Visibility = Visibility.Hidden; _semanticNetwork = semanticNetwork; foreach (var questionDefinition in Repositories.Questions.Definitions.Values) { var genericType = typeof(QuestionViewModel <>).MakeGenericType(questionDefinition.Type); var viewModelType = Assembly.GetExecutingAssembly().GetTypes().First(t => !t.IsAbstract && genericType.IsAssignableFrom(t)); _questions[questionDefinition.GetName(_language)] = () => Activator.CreateInstance(viewModelType) as IQuestionViewModel; } comboBoxQuestion.ItemsSource = _questions.Keys.OrderBy(q => q); _propertySelectorCreators = new Dictionary <Type, CreatePropertySelectorDelegate> { { typeof(IConcept), createConceptSelector }, { typeof(bool), createCheckBox }, { typeof(StatementViewModel), createStatementEditor }, { typeof(ICollection <StatementViewModel>), createStatementsList }, }; }
private void clearQuestion_Click(object sender, RoutedEventArgs e) { panelSelectQuestion.Visibility = Visibility.Visible; while (panelQuestionParams.Children.Count > 2) { panelQuestionParams.Children.RemoveAt(panelQuestionParams.Children.Count - 1); } while (panelQuestionParams.RowDefinitions.Count > 2) { panelQuestionParams.RowDefinitions.RemoveAt(panelQuestionParams.RowDefinitions.Count - 2); } panelQuestionParams.Visibility = Visibility.Collapsed; Question = null; comboBoxQuestion.SelectedItem = null; _requiredFieldSelectors.Clear(); }
private void beginEditQuestion(IQuestionViewModel question) { panelSelectQuestion.Visibility = Visibility.Collapsed; panelQuestionParams.Visibility = Visibility.Visible; Question = question; textBoxQuestion.Text = comboBoxQuestion.Text; int gridRow = 1; foreach (var property in Question.GetType().GetProperties()) { var propertyDescriptor = property.GetCustomAttribute <PropertyDescriptorAttribute>(); if (propertyDescriptor != null) { panelQuestionParams.RowDefinitions.Insert(gridRow, new RowDefinition { Height = GridLength.Auto }); _propertySelectorCreators[property.PropertyType](propertyDescriptor, property, gridRow); gridRow++; } } buttonOk.IsEnabled = Question != null && _requiredFieldSelectors.TrueForAll(cb => cb.SelectedValue != null); }