//--------------------------------------------------------------------------------------------------------- /// <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(); } }
//--------------------------------------------------------------------------------------------------------- /// <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); }
//--------------------------------------------------------------------------------------------------------- /// <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); }
//--------------------------------------------------------------------------------------------------------- /// <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); } }
//--------------------------------------------------------------------------------------------------------- /// <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(); } } }