TextBox для учетного номера - PullRequest
1 голос
/ 22 октября 2019

В моем классе у меня есть Number свойство

double number;
public double Number { get => number; set { number = value; OnPropertyChanged(); } }

, связанное с TextBox в xaml таким образом:

<TextBox Text="{Binding Number, UpdateSourceTrigger=PropertyChanged, StringFormat=N2}"/>

Когда я запускаю приложениеTextBox автоматически получает 0.00, вероятно, потому что типы значений инициализируются по умолчанию. Если я TAB для фокусировки TextBox, он не выберет 0.00, поэтому я должен вручную удалить первый 0 перед десятичной точкой, чтобы там ввести какое-то значение. Если я введу целое число, я получу конечный .00, как и ожидалось, НО, если я нажму . на цифровой клавиатуре, чтобы добавить некоторые десятичные точки после целой части, я получу красный знак вокруг TextBox и.00 не удаляется! Поэтому вместо того, чтобы нажимать . и вводить цифры, я должен нажать , чтобы сначала перейти к десятичной части, а затем ввести цифры.

Я хочу TextBox будет пустым / пустым, когда приложение запускается и когда я нажимаю . , я хочу, чтобы конечный .00 был заменен тем, что я ввожу, т.е. .25, после этого Если я нажму кнопку, чтобы обработать значение в коде, я хочу, чтобы TextBox снова был пустым / пустым! Как это сделать?

Есть ли маска TextBox для этой цели?

1 Ответ

1 голос
/ 23 октября 2019

A double - это тип значения, который никогда не может быть null. Если вы хотите, чтобы TextBlock был пустым, вам следует привязать к Nullable<double> со значением по умолчанию null.

@ mm8, это здорово, это решает половину проблемыи если привыкнуть нажимать стрелку вправо вместо. для значений после десятичной запятой это фактически решает всю проблему. Есть ли шанс получить неожиданное значение, подобное этому, с помощью Nullable<double>?

Нет, для свойства Nullable<double> можно установить только значение double или null. Ничего больше. Другими словами, он принимает те же значения, что и double плюс null (default(double?).

...