Skip to content

Числовые маски

Тип маски Numeric позволяет пользователям вводить числовые значения (целые, вещественные значения, валюту, проценты и т.д.) в редакторах в соответствии с указанной маской ввода. Маска ввода также может использоваться для форматирования числовых значений в режиме отображения (когда редактирование текста не активно). По умолчанию в контроле SpinEditor включен тип маски Numeric. Чтобы включить этот тип маски для других текстовых редакторов, установите для свойства редактора TextEditor.MaskType значение Numeric.

Используйте свойство редактора Mask, чтобы задать маску ввода. Маска ввода - это строка, которая определяет шаблон, в соответствии с которым вводится или форматируется числовое значение.

Текущие региональные настройки влияют на большинство цифровых масок. Например, региональные настройки определяют символ валюты и десятичный разделитель. Вы можете принудительно присвоить маске определенную региональную настройку, используя свойство TextEditor.MaskCulture.

Редакторы Eremex поддерживают стандартные и пользовательские числовые маски.

Стандартные маски

Стандартные числовые маски, поддерживаемые редакторами Eremex, соответствуют наиболее распространенному standard numeric display formats, который вы можете использовать для форматирования значений в .NET.

Пример

Следующий код применяет маску p1 к SpinEditor. Маска p форматирует значение редактора в процентах. Суффикс 1 (спецификатор точности) определяет количество цифр справа от десятичной точки.

xmlns:mxe="https://schemas.eremexcontrols.net/avalonia/editors"

<mxe:SpinEditor x:Name="SpinEditor" Width="200" Value="0.3" Mask="p1" Increment="0.005"/>

spineditor-standardmask-p1-example

Стандартные спецификации масок

Стандартная числовая маска состоит из одного стандартного спецификатора маски и необязательного спецификатора точности (целочисленного значения). Спецификатор точности влияет на количество цифр в результирующей строке.

В таблице ниже приведены доступные стандартные спецификации масок.

Спецификатор маски Описание Пример
C или c Валюта.

Спецификатор точности определяет количество десятичных разрядов справа от десятичной точки.
12.54("c",ru-RU)→"12,54 ₽"

71,85("c0",zh-CN)→"¥72"
D или d Десятичные (целые) числа.

Спецификатор точности определяет минимальное количество цифр.
789("D")→"789"

-965("D5")→"-00965"
F или f

G или g
Номера с фиксированной запятой.

Спецификатор точности определяет количество десятичных разрядов. Спецификатор точности по умолчанию определяется CultureInfo.NumberFormatInfo.NumberDecimalDigits.
1234.5678("F",ru-RU).→"1234,57"

1234.56("F4",встроенный)→"-1234.5600"
N или n Действительные числа с разделителями групп.

Спецификатор точности определяет количество десятичных разрядов. Спецификатор точности по умолчанию определяется CultureInfo.NumberFormatInfo.NumberDecimalDigits.
1234.5678("N",ru-RU).→"1 234,57"

-1234,56("N3",en-US)→"-1,234.560"
P Число отображается как есть с символом процента в соответствии с системным шаблоном.

Системный шаблон определяется свойствами CultureInfo.NumberFormatInfo.PercentNegativePattern и CultureInfo.NumberFormatInfo.PercentPositivePattern.

Спецификатор точности определяет количество десятичных разрядов. Спецификатор точности по умолчанию определяется CultureInfo.NumberFormatInfo.PercentDecimalDigits.
12("P",zh-CN).→"12.00%"

-15,6("P0",ru-RU)→"-16 %"
p Когда должно быть отображено нижележащее число, оно умножается на 100 и отображается с символом процента в соответствии с системным шаблоном. Когда число вводится в редакторе, обратное преобразование делит число на 100 и сохраняет его в значении редактирования.

Системный шаблон определяется свойствами CultureInfo.NumberFormatInfo.PercentNegativePattern и CultureInfo.NumberFormatInfo.PercentPositivePattern.

Спецификатор точности определяет количество десятичных разрядов (спецификатор точности по умолчанию определяется CultureInfo.NumberFormatInfo.PercentDecimalDigits).
12("p",en-US)→"1,200.00%"

-0,2567("P0",ru-RU)→"-26 %"

Пользовательские маски

Вы можете создавать пользовательские маски, если стандартные маски не соответствуют вашим конкретным потребностям. Пользовательская маска состоит из одного или нескольких пользовательских спецификаторов маски.

Пример

Следующий код применяет пользовательскую маску #,##0.## к SpinEditor. Маска позволяет пользователям вводить действительные числа в диапазоне от -9999,99 до 9999,99. Свойства редактора Minimum и Maximum ограничивают диапазон до [0;5000].

Спецификатор маски , используется для вставки локализованных разделителей между группами из трех цифр.

spineditor-custommask-example

xmlns:mxe="https://schemas.eremexcontrols.net/avalonia/editors"

<mxe:SpinEditor x:Name="SpinEditor" Value="1234.5" Mask="#,##0.##" Minimum="0" Maximum="5000" Increment="0.5"/>

Пользовательские спецификации масок

В следующей таблице показаны поддерживаемые пользовательские спецификаторы масок.

Спецификатор маски Описание Пример
0 Нулевой заполнитель для цифры (0-9). Этот заполнитель отображает "0", когда в этой позиции нет цифры. -12.345("0000")→"-0012"

78,97("000,0", ru-RU)→"079,0"
# Цифровой заполнитель. Этот заполнитель ничего не отображает, если в этой позиции нет цифры. 12.34("####")→"12"

-0.123("####.##", ру-РУ)→"-,12"
. Десятичная точка. Указывает расположение десятичной точки в результирующей строке.

Свойство CultureInfo.NumberFormatInfo.NumberDecimalSeparator определяет символ, используемый в качестве десятичного разделителя в текущей региональной системе переводов.
0,9876("0,00",zh-CN)→0.99

0.01("####0.#")→"0"
, Разделитель групп. Вы можете поместить разделитель групп в любую позицию внутри маски, чтобы отделить группы цифр слева от десятичной точки локализованным символом разделителя групп.

Свойство CultureInfo.NumberFormatInfo.NumberGroupSeparator определяет символ-разделитель групп по умолчанию. Свойство CultureInfo.NumberFormatInfo.NumberGroupSizes определяет количество цифр в каждой группе по умолчанию.

Если маска содержит символ "%" (см. ниже), свойства CultureInfo.NumberFormatInfo.PercentGroupSeparator и CultureInfo.NumberFormatInfo.PercentGroupSizes задают разделитель групп и длину группы соответственно.

Если маска содержит символ "$" (см. ниже), то вместо него используются свойства CultureInfo.NumberFormatInfo.CurrencyGroupSeparator и CultureInfo.NumberFormatInfo.CurrencyGroupSizes.
12345678.91("#,########.#",en-US)→"12,345,678.9"
% В процентах. Когда должно быть выведено нижележащее число, оно умножается на 100 и отображается с символом процента. Когда число вводится в редакторе, обратное преобразование делит число на 100 и сохраняет его в значении редактирования.

Спецификатор % определяет позицию локализованного символа процента (CultureInfo.NumberFormat.PercentSymbol) в результирующей строке.
0.31415("% ##0.00", en-US)→"% 31.41"

0,5567("##.0 %",ru-RU)→"55,7 %"
%% Символ в процентах. Отображает значение как есть и добавляет локализованный символ процента (CultureInfo.NumberFormat.PercentSymbol) к результирующей строке в указанной позиции. 0.31415("%% ##0.00", en-US)→"% 0.31"

0,1256("#0,00 %%",ru-RU)→"0,13 %"
\ Экранирующий символ. Символ, следующий за экранирующим символом, интерпретируется как литерал, а не как спецификатор маски. Используйте "\\" чтобы вставить символ обратной косой черты в качестве литерала. 123456("\#########\#")→"#123456#"
; Разделитель для разделов, которые определяют маски для положительных и отрицательных чисел.

Раздел перед символом ; задает маску для положительных чисел. Раздел после символа ; задает маску для отрицательных чисел. Если раздел с отрицательными значениями пуст, пользователь не сможет ввести отрицательные значения.
10.25("#0.##;(#0.##)", en-US)→"10.25"

-10.25("#0.##;(#0.##)", en-US)→"(10.25)"
$ Символ валюты. Вставляет символ валюты (CultureInfo.NumberFormatInfo.CurrencySymbol) в указанную позицию. 35("###0 $", zh-CN)→"35 ¥"
Все остальные символы Эти символы отображаются как есть, в режиме только для чтения. Они не сохраняются в значении редактирования редактора. 36.6("#0.## °", привет-ИН)→"36.6 °"

Свойства числовой маски

Вы можете настроить поведение числовой маски с помощью дополнительных свойств. Эти свойства доступны из прикрепленных свойств, предоставляемых классом Eremex.AvaloniaUI.Controls.Editors.NumericMaskOptions.

Автоматическое скрытие десятичного разделителя

Свойство NumericMaskOptions.AutoHideDecimalSeparator указывает, следует ли скрывать или показывать десятичный разделитель, если текущее число не содержит дробной части.

editors-masks-numeric-autohidedecimalseparator

Пример

В следующем примере не допускается скрытие десятичного разделителя.

xmlns:mxe="https://schemas.eremexcontrols.net/avalonia/editors"

<mxe:TextEditor Name="textEditor1" MaskType="Numeric" Mask="####0.#" mxe:NumericMaskOptions.AutoHideDecimalSeparator="False"/>

Следующий код устанавливает свойство AutoHideDecimalSeparator в коде, находящемся за ним:

textEditor1.MaskType = Eremex.AvaloniaUI.Controls.Editors.MaskType.Numeric;
textEditor1.Mask = "##0.##";
textEditor1.SetValue(NumericMaskOptions.AutoHideDecimalSeparatorProperty, false);

Показывать "0" или ничего для нулевых значений

Спецификатор маски '#' определяет заполнитель, который ничего не отображает, если в этой позиции нет цифры. Когда маска состоит только из цифр-заполнителей '#', а значение редактора равно '0', редактор может отображать либо строку "0" (режим по умолчанию), либо ничего.

Свойство NumericMaskOptions.HideInsignificantZeros позволяет вам выбрать режим рендеринга для значений '0', когда маска состоит из символов '#'.

  • Для HideInsignificantZeros установлено значение false (по умолчанию) — редактор отображает "0", когда значение редактирования равно "0".

    editors-masks-numeric-hideinsignificantzeros-false

  • Для HideInsignificantZeros установлено значение true — редактор ничего не отображает, когда значение редактирования равно "0".

    editors-masks-numeric-hideinsignificantzeros-true

Пример

В следующем примере свойству HideInsignificantZeros присваивается значение true, чтобы ничего не отображалось, когда значение редактирования равно "0".

xmlns:mxe="https://schemas.eremexcontrols.net/avalonia/editors"

<mxe:TextEditor Name="textEditor1" MaskType="Numeric" Mask="#####.##" mxe:NumericMaskOptions.HideInsignificantZeros="True"/>

Следующий код устанавливает свойство HideInsignificantZeros в коде, находящемся за ним:

textEditor1.MaskType = Eremex.AvaloniaUI.Controls.Editors.MaskType.Numeric;
textEditor1.Mask = "#####.##";
textEditor1.SetValue(NumericMaskOptions.HideInsignificantZeros, true);



* Эта страница была создана автоматически с помощью сервиса машинного перевода Яндекс Переводчик.