Wpf 从右到左的文本框输入

Wpf 从右到左的文本框输入,wpf,Wpf,是否可以设置文本框的样式/模板,以便输入从右向左填充其值?我的问题与阿拉伯语书写无关——我试图为货币字段创建一个文本框,这样当用户键入“12”时,值就会变成“0.12”。这里的C#/WPF/MVVM项目您是否尝试了HorizontalContentAlignment?它应该对你有用 <TextBox HorizontalContentAlignment="Right" Text="6999958"></TextBox> 在这里尝试了多种解决方案,IMHO-是文本框中货币

是否可以设置文本框的样式/模板,以便输入从右向左填充其值?我的问题与阿拉伯语书写无关——我试图为货币字段创建一个文本框,这样当用户键入“12”时,值就会变成“0.12”。这里的C#/WPF/MVVM项目

您是否尝试了
HorizontalContentAlignment
?它应该对你有用

<TextBox HorizontalContentAlignment="Right" Text="6999958"></TextBox>

在这里尝试了多种解决方案,IMHO-是文本框中货币格式的最佳选择。此解决方案将输入格式化为货币值,并且只接受数字和指定的分隔符(可在KeyPress事件处理程序中自定义)。只需尝试一下,易于实现,非常适合这种情况(支持特定区域性中的格式,而不是当前计算机的区域性)

使用流动方向

<TextBox Text="" FlowDirection="RightToLeft" />


有关更多信息,请查看此链接

为什么不能将文本向右对齐?谢谢,此链接适用于文本框。您是否也可以为TextBlock(DataGridColumn.CellStyle)提供解决方案?TextBlock没有HorizontalContentAlignment属性。请为TextBlock使用
TextAlignment
属性。但是,用户无法输入文本的textblock为什么需要它呢。你能为textblock试试这个吗<代码>是的,谢谢,非常接近我想要的。TextBlock——因为它是DataGridColumn.CellStyle元素——当用户单击单元格进行编辑时,它会变成一个文本框。如果我一开始制作这个文本框——DataGrid看起来不太好——我不希望它是一个同时接受光标的文本框集合
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();
    }
}
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;
    }
}
<TextBox Text="" FlowDirection="RightToLeft" />