Ejemplo n.º 1
0
        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 },
            };
        }
Ejemplo n.º 2
0
 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();
 }
Ejemplo n.º 3
0
        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);
        }