The decimal.MinValue is displayed when e negative value is pasted in RadMaskedCurrencyInput when the maskedInput:MaskedInputExtensions.Minimum attached property is set to 0, and the current Value is null.
To work this around, you can override the HandlePaste method of the masked input control.
public class CustomMaskedCurrencyInput : RadMaskedCurrencyInput
{
protected override void HandlePaste()
{
object clipBoardValue = Clipboard.GetText();
if (clipboardValue can be parsed to a number and it is a negative number)
{
// don't call the base method
}
else
{
base.HandlePaste();
}
}
}
RadMaskedNumericInput Maximum value setting is not working with hungarian culture settings.
Steps to reproduce:
- Open the attached project, fix the references and start the application
- Click button "English"
- Select the first item from the dropdown
- Inputs are changing to 1433.2 and 1810.9 - OK
- Select the 2nd item from the dropdown
- Inputs are changing to 0 and 59 - OK
- Click button "Hungarian"
- Select the first item from the dropdown
- Inputs are changing to 1433.2 and 1433.2 - NOT OK, Why?
Thanks,
Roberto
The position of the caret is wrong when after selecting multiple chars then one of Backspace or Delete buttons is clicked. Example: Value is 123456 Formated it looks like : 123,456.00 Selected portion is [3,4]. Pressing backspace results in 125 | 6.00 Expected is 12|56.00/ Consider | as the caret position. The behavior can be observed in Numeric and Currency Inputs. Possible workaround: private void RadMaskedNumericInput_PreviewKeyDown(object sender, KeyEventArgs e) { var selectionstart = this.numericInput.SelectionStart + this.numericInput.SelectionLength; if (this.numericInput.SelectionLength > 0 && (e.Key == Key.Back || e.Key == Key.Delete)) this.numericInput.ValueChanged += (ss, ee) => { this.numericInput.SelectionStart = selectionstart; }; }
Pressing backspace or delete keys produce wrong carret position in numeric input or currency input. For example Value is 1234 formatted like 1,234.0. Caret is between 2 and 3. Pressing backspace leads to 13|4. Expected is 1|34.
RadMaskedTextInput. Value is 12345. Select All. Then press "A" (or random key) while down, press space key and then release it (this happens when you type fast). Expected: Value is "A ". Actual Value is " " (A is removed). Workaround: public class CustomInput : RadMaskedTextInput { protected override void OnKeyDown(KeyEventArgs e) { if (this.Value != null && this.SelectionLength == this.Value.Length && this.SelectionLength > 0) { this.ClearCommand.Execute(null); } base.OnKeyDown(e); } }
You can subscribe to the PreviewKeyDown event of the control. In the event handler, you can double check if all the text is select and if the delete key is pressed. If yes, you can execute the clear command of the control. private void TxtPhone_PreviewKeyDown(object sender, KeyEventArgs e) { var myMask = sender as RadMaskedTextInput; if (e.Key == Key.Delete && myMask.Text.Length == myMask.SelectionLength) { myMask.ClearCommand.Execute(null); } }
The issue is reproducible with NoMask and UpdateValueEvent=LostFocus. The Clear button clears the whole content while deleting with the Backspace and Delete keys leaves the separator symbols. When the focus is moved outside of the masked input, the symbols are removed.
The workaround is to create a custom class which derives from RadMaskedTextInput and override the OnSelectionOnFocus() method. protected override int OnSelectionOnFocus(SelectionOnFocus selectionOnFocus) { if (MaskedInputExtensions.GetCaretToEndOfTextOnFocus(this)) { return this.Text != null ? this.Text.Length : 0; } if (selectionOnFocus == SelectionOnFocus.Default) { return 0; } return base.OnSelectionOnFocus(selectionOnFocus); } Then you can set the following properties to the mask: - TextMode="PlainText" - Placeholder=" " - maskedInput:MaskedInputExtensions.CaretToEndOfTextOnFocus="True"
In NoMask scenario the Placeholder should not be a valid property. The issue: if the Placeholder is an underscore (default value) and the user's input underscore this character is not displayed on lost focus. Workarounds: 1. Set empty string for Placeholder (Placeholder="") 2. Set TextMode property to MaskedText (TextMode="MaskedText")
When two or more MaskInput controls are focused at the same time, the application freezes. Workaround: Instead of txtMask1.Focus(); txtMask2.Focus(); Use txtMask1.Focus(); Dispatcher.BeginInvoke(new Action(() => { txtMask2.Focus(); }), DispatcherPriority.Loaded);
The Value property of the TextInput is not correctly updated when using the On-Screen Touch keyboard when using no mask (Mask=""). We managed to reproduce the issue on Windows 8.1, 10. The behavior is different in both Windows OS. To get the Touch Keyboard you can check the following link. Windows OS 8.1 - When you enter text and pressed backspace key- the value property is not updated the first time. Windows OS 10 - When you enter text and pressed backspace key the value property is updated correctly. But if you HOLD THE BACKSPACE KEY the Value property ignored this behavior.
The Mask property of the RadMaskedDateTimeInput cannot be set or changed via binding. Internally it is always set to "d".
If there is a whitespace in the Mask of the control and you try to paste a value containing whitespace, the control will trim the user input. Example: Mask="(###) ###-#### User Input: 1234567890 The MaskedText should be: (123) 456-7890 If you copy this input and try to paste it into a control with the same Mask you will get (123) 45-6789 which is not correct. Possible workarounds !!! 1. In a scenario when the user will enter only digits in the MaskedTextInput for a phone number is to restrict the input by setting the following mask. <telerik:RadMaskedTextInput EmptyContent="Enter digits" Mask="(d3) d3-d4" /> 2. The second workaround is to use non breaking space in Mask, this way there won't be a match between space by the user and space in the mask symbols.
Mask is "a-a". Value is set to "M-M". The MaskedTextInput control must internally coerce the Value to "MM". Instead , MaskedTextInput'Value is "M-" which is wrong. Other example of the same issue: Bound Value is bbaabbaabbdd, Mask is "aa-aa-aa-aa-aa-aa" The result is - value becomes bbbbbbddaaaa. Workaround: Use custom Mask Token (check help article: http://docs.telerik.com/devtools/wpf/controls/radmaskedinput/how-to/howto-create-custom-token.html) public class CustomToken : ITokenValidationRule { public bool IsRequired { get { return false; } } public bool IsValid(char ch) { return ValidChars.Contains(ch.ToString()); } public char Token { get { return '$'; } } public TokenTypes Type { get { return TokenTypes.AlphaNumeric; } } private string myValidChars = "0123456789qwertyuioplkjhgfdsazxcvbnm"; public string ValidChars { get { return myValidChars; } } } TokenLocator.AddCustomValidationRule(new CustomToken()); InitializeComponent(); <telerik:RadMaskedTextInput Mask="$-$"
In MaskedTextInput the ClearButton will make the Value "" but it should make it NULL. All other InputControls have null value after pressing ClearButton. No-masked TextInput works fine - the ClearButton makes the Value Null. As a workaround, you can use the ClearCommand, bind it to Command from your ViewModel and the execute handler can set the bound Value to null.