如何在 XAML 中格式化此字符串?
Posted
技术标签:
【中文标题】如何在 XAML 中格式化此字符串?【英文标题】:How can I format this string in XAML? 【发布时间】:2021-05-11 15:43:21 【问题描述】:我正在尝试将使用 Winforms 中的部件的程序转换为 WPF。我在这部分遇到了一些麻烦。程序这样做:
this.textBox.Properties.DisplayFormat.FormatString = "#,#;-#,#;-";
我不太确定这是做什么的,我正在努力将其转换为 WPF 的 XAML。我知道我必须在这里设置它:
Text="Binding x, Mode=OneWay, StringFormat=..."/>
但我不确定什么是等价的,因为#,#;-#,#;-
不起作用。谢谢你的帮助! :)
【问题讨论】:
Custom numeric format stringsText="Binding x, Mode=OneWay, StringFormat=0:#,#;-#,#;-"/>
应该可以正常工作。请修正您的帖子,使其包含minimal reproducible example 形式的实际 代码,以及该代码的作用、与您想要的有何不同以及 的精确解释特别是你遇到了麻烦。
【参考方案1】:
根据WinForms Format Specifiers,您的原始格式字符串是:
-
您希望正十进制数看起来像整数 #,#(例如:1234.5 看起来像 1,234)
您希望负十进制数看起来像整数 -#,#(例如:-1234.5 看起来像 -1,234)
您希望零看起来像 -(示例:-)
对于 WPF,您可以使用相同的字符串格式说明符,但您需要在格式前添加 。这是必需的,否则 WPF 会与其他标记扩展混淆。
这是一个例子:
Main.xaml
<StackPanel>
<TextBlock Text="Binding Value1, StringFormat=0:#,#;-#,#;-"/>
<TextBlock Text="Binding Value2, StringFormat=0:#,#;-#,#;-"/>
<TextBlock Text="Binding Value3, StringFormat=0:#,#;-#,#;-"/>
</StackPanel>
Main.xaml.cs
public double Value1 get; set;
public double Value2 get; set;
public double Value3 get; set;
public MainWindow()
InitializeComponent();
Value1 = 1234567.890f;
Value2 = -987654.321f;
Value3 = 0;
this.DataContext = this;
这是最终输出:
【讨论】:
以上是关于如何在 XAML 中格式化此字符串?的主要内容,如果未能解决你的问题,请参考以下文章
如何在UWP [XAML]中隐藏列格式DataGridTextColumn?