/// <summary>
 /// ProblemDataItem constructor.
 /// </summary>
 /// <param name="name">Parameter name.</param>
 /// <param name="type">Parameter tyoe.</param>
 /// <param name="defaultValue">Parameter's default value (optional; will be used if value is not specified).</param>
 /// <param name="isRequired">"true" if parameter must be set, otherwise "false".</param>
 /// <param name="extraData">Some extra data.</param>
 public ProblemDataItem(string name, ProblemDataItemType type, object defaultValue, bool isRequired = true, object extraData = null)
 {
     Name = name;
     Type = type;
     DefaultValue = defaultValue;
     ExtraData = extraData;
     IsRequired = isRequired;
 }
        private object getElementValue(FrameworkElement element, ProblemDataItemType type)
        {
            switch (type)
            {
                case ProblemDataItemType.Boolean:
                    return (element as CheckBox).IsChecked.Value;

                case ProblemDataItemType.String:
                    return (element as TextBox).Text;

                case ProblemDataItemType.Function:
                    return (element as TextBox).Text;

                case ProblemDataItemType.Character:
                    return (element as TextBox).Text;

                case ProblemDataItemType.Double:
                    return (element as TextBox).Text;

                case ProblemDataItemType.Int:
                    return (element as TextBox).Text;

                case ProblemDataItemType.UnsignedInt:
                    return (element as TextBox).Text;

                case ProblemDataItemType.OneOfMany:
                    return (element as ComboBox).SelectedItem;

                default:
                    return null;
            }
        }
        private void setElementValue(FrameworkElement element, ProblemDataItemType type, object value)
        {
            switch (type)
            {
                case ProblemDataItemType.Function:
                    (element as TextBox).Text = value.ToString();
                    break;

                case ProblemDataItemType.Boolean:
                    (element as CheckBox).IsChecked = (bool)value;
                    break;

                case ProblemDataItemType.String:
                    (element as TextBox).Text = value.ToString();
                    break;

                case ProblemDataItemType.Character:
                    (element as TextBox).Text = value.ToString();
                    break;

                case ProblemDataItemType.Double:
                    (element as TextBox).Text = value.ToString();
                    break;

                case ProblemDataItemType.Int:
                    (element as TextBox).Text = value.ToString();
                    break;

                case ProblemDataItemType.UnsignedInt:
                    (element as TextBox).Text = value.ToString();
                    break;

                case ProblemDataItemType.OneOfMany:
                    try {
                        (element as ComboBox).SelectedItem = value;
                    }
                    catch
                    {
                        (element as ComboBox).SelectedIndex = -1;
                    }
                    break;

                default:
                    break;
            }
        }
 /// <summary>
 /// ProblemDataItem constructor.
 /// </summary>
 /// <param name="name">Parameter name.</param>
 /// <param name="type">Parameter tyoe.</param>
 /// <param name="isRequired">"true" if parameter must be set, otherwise "false".</param>
 public ProblemDataItem(string name, ProblemDataItemType type, bool isRequired = true) : this(name, type, null, true, null) { }