У меня проблема со свойством зависимостей настраиваемого элемента управления. Элемент управления в основном представляет собой текстовое поле с раскрывающейся цифровой панелью.
![enter image description here](https://i.stack.imgur.com/vB4Gx.png)
Когда пользователь нажимает кнопку на цифровой клавиатуре, текст добавляется к свойству зависимости InputValue. Все работает, как ожидалось, пока я не попробую добавить "." к стоимости недвижимости. Переменная value в наборе по-прежнему имеет символ "." (например: «1.»), но после SetValue, InputValue не имеет «.» (например: «1»)
Код выглядит следующим образом - OnInputValueChanged просто проверяет, является ли элемент управления вводом определенного типа c, и если да, то когда строка достигает определенной длины, закройте цифровую клавиатуру.
public static readonly DependencyProperty InputValueProperty = DependencyProperty.Register("InputValue", typeof(String), typeof(TextBoxTouchNum), new FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.AffectsRender | FrameworkPropertyMetadataOptions.AffectsParentArrange, new PropertyChangedCallback(OnInputValueChanged)));
public String InputValue
{
get => (String)GetValue(InputValueProperty);
set
{
SetValue(InputValueProperty, value);
}
}
public static void OnInputValueChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
TextBoxTouchNum ctrl = (TextBoxTouchNum)d;
String val = (String)ctrl.InputValue;
if (val != null && ctrl.IsHeatNoEntry && val.Trim().Length == 8)
if (ctrl.IsTouchScreen && ctrl.NumPadVisible)
{
ctrl.NumPadVisible = false;
Keyboard.ClearFocus();
}
}
Если я заменю код для десятичной кнопки, нажмите, чтобы добавить что-то другое, например «.0», у меня будет «1.0», но как только я вернусь на конечный 0 , десятичная дробь снова пропадает.
Код обработчика нажатия кнопки:
private void Decimal_Click(object sender, RoutedEventArgs e)
{
InputValue += ".";
}
private void Num0_Click(object sender, RoutedEventArgs e)
{
InputValue += "0";
}
повторяется для кнопок 0-9
Привязка Xaml:
<TextBox x:Name="TextBoxValue"
Width="{Binding TextBoxWidth}"
Text="{Binding InputValue, RelativeSource={RelativeSource AncestorType=UserControl}}"
materialDesign:HintAssist.Hint="{Binding Hint}"
Style="{StaticResource MaterialDesignFloatingHintTextBox}"
TextAlignment="Center"
VerticalAlignment="Center"
Background="Transparent" />
Мне кажется, что значение где-то преобразуется в число c и отбрасывает обучающее ".".
Любые предложения будут оценены!