C# WPF: Ввод в TextBox только строки формата Double с макс. 6 знаков после запятой

В разметке имеется TextBox, в который нужно разрешить ввод только цифр и запятой. Но при этом запятую можно вводить только один раз и количество символов после нее не должно превышать 6.

Изначально я пробовал посимвольно проверять состав строки и пытался добавлять исключения, но там очень много сложностей. Как сделать такое через привязки данных я тоже не понимаю - не удается установить параметр в xaml-разметке как здесь:

<TextBox Text="{Binding Value, StringFormat={}{0:#,#.00}}" />

Он просто отказывается воспринимать параметр StringFormat.

Пока что, единственное компактное и максимально неграмотное решение, которое пришло мне на ум - пробовать конвертировать содержимое строки в double при каждом обновлении TextBox.Text. Это тратит много ресурсов и все равно работает некорректно:

private void AmountOnlyNumbers(object sender, RoutedEventArgs e)
{
    try
    {
        Convert.ToDouble(Amount.Text);
    }
    catch
    {
        if (Amount.Text.Length > 0) Amount.Text = Amount.Text.Remove(Amount.Text.Length - 1);
    }
}

Как будет более правильно это сделать?


Ответы (0 шт):