TextBox从右到左输入

时间:2016-08-21 20:23:43

标签: wpf

是否可以对TextBox进行样式/模板设置,以便输入从右到左填充其值?我的问题与阿拉伯文写作无关 - 我试图为货币字段创建一个文本框,以便当用户输入“12”时。 - 价值变为0.12'。这里的C#/ WPF / MVVM项目

3 个答案:

答案 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