繁体   English   中英

更改 WPF ListView 中的小数点分隔符(绑定,字符串格式)

[英]Change decimal separator in WPF ListView (Binding, String Format)

我有一个带有数字的 DataTable,它是 ListView 的 ItemsSource,我希望它们格式化为带有“,”作为小数分隔符和“。”的货币。 作为组分隔符。

我通常知道它如何在绑定(XAML 和代码隐藏)中与 StringFormat 一起使用,如以下问题所示:

更改绑定中的默认千位和小数点分隔符

但这次它不起作用:我的 ListView 显示 '.' 尽管如此,作为小数分隔符。 我的示例中的特殊之处在于,我需要在运行时生成 GridViewColumns,并以编程方式将 DataTemplates 加载到其中,例如:

 GridViewColumn Amount_col= new GridViewColumn();
 Amount_col.Header = "Gesamt";

 DataTemplate dataTemplate = new DataTemplate(typeof(TextBlock));
 FrameworkElementFactory Grid = new FrameworkElementFactory(typeof(Grid));
 FrameworkElementFactory Txtblck= new FrameworkElementFactory(typeof(TextBlock));

 Binding binding = new Binding("AMOUNT");       
 Txtblck.SetBinding(TextBlock.TextProperty, binding);
 binding.StringFormat = String.Format(new CultureInfo("de-DE"), "#,#.00€", Txtblck.Text); //not working
 
 Grid.AppendChild(Txtblck);
 dataTemplate.VisualTree = Grid;
 Amount_col.CellTemplate = dataTemplate;
 Eintraege_view.Columns.Add(Amount_col);

output 如下: https://i.stack.imgur.com/QuN6c.png (还不允许包含图片)

但我需要一个 output 格式如下:1.234,67€ 而不是 1,234.67€。

我还检查了我的 CurrentCulture 和 CurrentUICulture ,它们都是“de-DE”。

我也试过:

binding.StringFormat = String.Format(new CultureInfo("de-DE"), "{0:N}", Txtblck.Text);

我尝试通过 NumberFormatInfo 更改小数点和组分隔符,但这也不起作用。

我想问题出在绑定、ListView 或 Textblock 上,但我找不到真正的问题。 有人可以帮我解决这个问题并使我的分隔符成为','。

也许您可以创建一个继承自 Binding 的 CultureAwareBinding class:

public class CultureAwareBinding : Binding
{
    public CultureAwareBinding(string path)
        : base(path)
    {
        ConverterCulture = CultureInfo.CurrentCulture;
    }
}

然后,在您的代码中使用此 class :

var binding = new CultureAwareBinding("AMOUNT");       
Txtblck.SetBinding(TextBlock.TextProperty, binding);

我从这篇文章中提取了这段代码。

您的binding.StringFormat没有错误吗? 如果你想要 1.234,67€,它应该是#.#,00€而不是#,#.00€ €。

binding.StringFormat = String.Format(new CultureInfo("de-DE"), "#.#,00€", Txtblck.Text);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM