[英]How to change string column sorting to decimal sorting in WPF Listview column
[英]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.