//---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Потеря фокуса текстового поля
            /// </summary>
            /// <param name="sender">Источник события</param>
            /// <param name="args">Аргументы события</param>
            //---------------------------------------------------------------------------------------------------------
            private void OnTextField_LostFocus(Object sender, RoutedEventArgs e)
            {
                // 1) Пробуем преобразовать текст в число
                Double result = 0;

                if (XNumbers.ParseDoubleFormat(TextField.Text, out result))
                {
                    Value = new TMeasurementValue(result, Value.QuantityType, Value.UnitType);
                    if (Value.Value < MinValue)
                    {
                        Value = Value.Clone(MinValue);
                    }
                    if (Value.Value > MaxValue)
                    {
                        Value = Value.Clone(MaxValue);
                    }

                    // 2) Форматируем поле
                    mIsDirectText = true;
                    if (String.IsNullOrEmpty(FormatValue))
                    {
                        TextField.Text = String.Format(FormatValueDefault, Value);
                    }
                    else
                    {
                        TextField.Text = String.Format(FormatValue, Value);
                    }
                    mIsDirectText = false;
                }
                else
                {
                    ResetText();
                }
            }
Ejemplo n.º 2
0
            //---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Десереализация двухмерной точки из строки
            /// </summary>
            /// <param name="data">Строка данных</param>
            /// <returns>Двухмерная точка</returns>
            //---------------------------------------------------------------------------------------------------------
            public static Point DeserializeFromString(String data)
            {
                Point point = new Point();

                String[] vector_data = data.Split(';');
                point.X = (XNumbers.ParseDouble(vector_data[0]));
                point.Y = (XNumbers.ParseDouble(vector_data[1]));
                return(point);
            }
            //---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Десереализация двухмерного вектора из строки
            /// </summary>
            /// <param name="data">Строка данных</param>
            /// <returns>Двухмерный вектор</returns>
            //---------------------------------------------------------------------------------------------------------
            public static Vector DeserializeFromString(String data)
            {
                Vector vector = new Vector();

                String[] vector_data = data.Split(';');
                vector.X = (XNumbers.ParseDouble(vector_data[0]));
                vector.Y = (XNumbers.ParseDouble(vector_data[1]));
                return(vector);
            }
Ejemplo n.º 4
0
            //---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Десереализация прямоугольника из строки
            /// </summary>
            /// <param name="data">Строка данных</param>
            /// <returns>Прямоугольник</returns>
            //---------------------------------------------------------------------------------------------------------
            public static Rect DeserializeFromString(String data)
            {
                Rect rect = new Rect();

                String[] rect_data = data.Split(';');
                rect.X      = (XNumbers.ParseDouble(rect_data[0]));
                rect.Y      = (XNumbers.ParseDouble(rect_data[1]));
                rect.Width  = (XNumbers.ParseDouble(rect_data[2]));
                rect.Height = (XNumbers.ParseDouble(rect_data[3]));
                return(rect);
            }
Ejemplo n.º 5
0
            //---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Изменение вещественного значения через параметр
            /// </summary>
            /// <param name="value">Значение</param>
            /// <param name="target_type">Целевой тип</param>
            /// <param name="parameter">Дополнительный параметр</param>
            /// <param name="culture">Культура</param>
            /// <returns>Вещественный тип</returns>
            //---------------------------------------------------------------------------------------------------------
            public Object ConvertBack(Object value, Type target_type, Object parameter, CultureInfo culture)
            {
                Double val = (Double)value;

                if (parameter != null)
                {
                    return(val + XNumbers.ParseDouble(parameter.ToString()));
                }
                else
                {
                    return(val);
                }
            }
Ejemplo n.º 6
0
            //---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Конвертация строкового типа в вещественный тип
            /// </summary>
            /// <param name="value">Значение</param>
            /// <param name="target_type">Целевой тип</param>
            /// <param name="parameter">Дополнительный параметр</param>
            /// <param name="culture">Культура</param>
            /// <returns>Вещественный тип</returns>
            //---------------------------------------------------------------------------------------------------------
            public Object ConvertBack(Object value, Type target_type, Object parameter, CultureInfo culture)
            {
                String str = (String)value;

                if (String.IsNullOrWhiteSpace(str))
                {
                    return(0);
                }
                else
                {
                    str = str.Trim();
                    return(XNumbers.ParseDouble(str));
                }
            }
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Обработчик события изменения текста
 /// </summary>
 /// <param name="sender">Источник события</param>
 /// <param name="args">Аргументы события</param>
 //---------------------------------------------------------------------------------------------------------
 private void OnTextField_TextChanged(Object sender, TextChangedEventArgs args)
 {
     if (mIsDirectText == false)
     {
         Double result = 0;
         if (XNumbers.ParseDoubleFormat(TextField.Text, out result))
         {
             Value = new TMeasurementValue(result, Value.QuantityType, Value.UnitType);
             if (Value.Value < MinValue)
             {
                 Value = Value.Clone(MinValue);
             }
             if (Value.Value > MaxValue)
             {
                 Value = Value.Clone(MaxValue);
             }
         }
         else
         {
             ResetText();
         }
     }
 }