在 RadWatermarkTextbox 中将数据格式化为货币
Formatting data as money in a RadWatermarkTextbox
我希望用户输入美国货币金额的运费数据,例如 23.45 美元。他们会输入 23.45
如果设置为 RadWatermarkTextbox,则必须通过以下步骤才能输入 23.45:
1) Enter 23
2) Use the arrow key to navigate to the cents (skip over the decimal point)
3) Enter 45 (.00 shifts over to the right making it look like .45.00)
4) Delete the .00
我把格式改为StringFormat='#.00',StringFormat=F2,没有字符串格式。这些都没有解决问题。
我在网上找到了这个建议,但我无法输入小数点。只能输入2345.
Private Sub txtDefaultFreightRate_PreviewTextInput(sender As Object, e As TextCompositionEventArgs) Handles txtDefaultFreightRate.PreviewTextInput
Dim regex As New Regex("^[.][0-9]+$|^[0-9]*[.]{0,1}[0-9]*$")
e.Handled = Not regex.IsMatch(TryCast(sender, System.Windows.Controls.TextBox).Text.Insert(TryCast(sender, System.Windows.Controls.TextBox).SelectionStart, e.Text))
For Each ch As Char In e.Text
If Not ([Char].IsDigit(ch) OrElse ch.Equals("."c)) Then
e.Handled = True
End If
Next
End Sub
XAML 运费:
<telerik:RadWatermarkTextBox x:Name="txtDefaultFreightRate"
Margin="0,2,0,0"
Text="{Binding defaultFreightRate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, StringFormat='{}{0:C2}'}"
<telerik:RadWatermarkTextBox.WatermarkContent>
<TextBlock Text="Enter in format $$$.$$ " FontSize="12" Foreground="#969696" />
</telerik:RadWatermarkTextBox.WatermarkContent>
</telerik:RadWatermarkTextBox>
如果更改为 wpf TextBox,则按预期输入数据作为货币。 XAML 为此:
<TextBox Text="{Binding defaultFreightRate, Mode=TwoWay, StringFormat='{}{0:C2}'}" Width="100" Height="25" />
是否无法在 RadWatermarkTextBox 中将数据条目格式化为金钱?我在网上找不到太多关于此的内容。我假设格式与常规文本框相同。
谢谢
尝试删除 UpdateSourceTrigger=PropertyChanged
:
<telerik:RadWatermarkTextBox x:Name="txtDefaultFreightRate"
Margin="0,2,0,0"
Text="{Binding defaultFreightRate, Mode=TwoWay, StringFormat='{}{0:C2}'}">
<telerik:RadWatermarkTextBox.WatermarkContent>
<TextBlock Text="Enter in format $$$.$$ " FontSize="12" Foreground="#969696" />
</telerik:RadWatermarkTextBox.WatermarkContent>
</telerik:RadWatermarkTextBox>
我希望用户输入美国货币金额的运费数据,例如 23.45 美元。他们会输入 23.45
如果设置为 RadWatermarkTextbox,则必须通过以下步骤才能输入 23.45:
1) Enter 23
2) Use the arrow key to navigate to the cents (skip over the decimal point)
3) Enter 45 (.00 shifts over to the right making it look like .45.00)
4) Delete the .00
我把格式改为StringFormat='#.00',StringFormat=F2,没有字符串格式。这些都没有解决问题。
我在网上找到了这个建议,但我无法输入小数点。只能输入2345.
Private Sub txtDefaultFreightRate_PreviewTextInput(sender As Object, e As TextCompositionEventArgs) Handles txtDefaultFreightRate.PreviewTextInput
Dim regex As New Regex("^[.][0-9]+$|^[0-9]*[.]{0,1}[0-9]*$")
e.Handled = Not regex.IsMatch(TryCast(sender, System.Windows.Controls.TextBox).Text.Insert(TryCast(sender, System.Windows.Controls.TextBox).SelectionStart, e.Text))
For Each ch As Char In e.Text
If Not ([Char].IsDigit(ch) OrElse ch.Equals("."c)) Then
e.Handled = True
End If
Next
End Sub
XAML 运费:
<telerik:RadWatermarkTextBox x:Name="txtDefaultFreightRate"
Margin="0,2,0,0"
Text="{Binding defaultFreightRate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, StringFormat='{}{0:C2}'}"
<telerik:RadWatermarkTextBox.WatermarkContent>
<TextBlock Text="Enter in format $$$.$$ " FontSize="12" Foreground="#969696" />
</telerik:RadWatermarkTextBox.WatermarkContent>
</telerik:RadWatermarkTextBox>
如果更改为 wpf TextBox,则按预期输入数据作为货币。 XAML 为此:
<TextBox Text="{Binding defaultFreightRate, Mode=TwoWay, StringFormat='{}{0:C2}'}" Width="100" Height="25" />
是否无法在 RadWatermarkTextBox 中将数据条目格式化为金钱?我在网上找不到太多关于此的内容。我假设格式与常规文本框相同。
谢谢
尝试删除 UpdateSourceTrigger=PropertyChanged
:
<telerik:RadWatermarkTextBox x:Name="txtDefaultFreightRate"
Margin="0,2,0,0"
Text="{Binding defaultFreightRate, Mode=TwoWay, StringFormat='{}{0:C2}'}">
<telerik:RadWatermarkTextBox.WatermarkContent>
<TextBlock Text="Enter in format $$$.$$ " FontSize="12" Foreground="#969696" />
</telerik:RadWatermarkTextBox.WatermarkContent>
</telerik:RadWatermarkTextBox>