是否可以对TextBox进行样式/模板设置,以便输入从右到左填充其值?我的问题与阿拉伯文写作无关 - 我试图为货币字段创建一个文本框,以便当用户输入“12”时。 - 价值变为0.12'。这里的C#/ WPF / MVVM项目
答案 0 :(得分:1)
你试过HorizontalContentAlignment
吗?它应该适合你。
<TextBox HorizontalContentAlignment="Right" Text="6999958"></TextBox>
转换价值&#39; 12&#39;到&#39; 0.12&#39;,请使用像
这样的转换器<TextBox HorizontalContentAlignment="Right" Text="6999958" Converter={Binding CurrencyConverter}></TextBox>
这里是转换器代码:
public class CurrencyConverter: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var intValue = int.Parse(value.ToString());
var result = 0;
try
{
result = intValue/100;
}
catch (Exception)
{
}
return result;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
答案 1 :(得分:0)
在SO上尝试了多个解决方案,而恕我直言 - this one最适合在TextBox中进行货币格式化。此解决方案以货币值格式化输入,并且仅接受数字和指定的分隔符(可在KeyPress事件处理程序中自定义)。只是尝试一下,易于实现,并且适用于这种情况(支持特定文化中的格式而不是当前计算机的文化)
private void textBox_TextChanged(object sender, EventArgs e)
{
textBox.Text = string.Format(System.Globalization.CultureInfo.GetCultureInfo("id-ID"), "{0:##0.00}", double.Parse(textBox.Text));
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != '.'))
{
e.Handled = true;
}
// only allow one decimal point
if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
{
e.Handled = true;
}
}
答案 2 :(得分:0)
使用FlowDirection。
<TextBox Text="" FlowDirection="RightToLeft" />
有关更多信息,请检查此链接Bidirectional Features in WPF Overview