tol*_*sm7 9 c# wpf xaml string-formatting
所以在我的XAML中我有这个:
<TextBlock Text="{Binding MyDecimalProperty, StringFormat={}{0:#.###}}"/>
Run Code Online (Sandbox Code Playgroud)
当MyDecimalProperty的值是例如5.35570256时,显示的TextBlock值是5.356
有没有办法让TextBlock显示5.355(即截断数字而不是舍入它)使用StringFormat?
我知道我可以使用值转换器,但我想知道我是否可以使用StringFormat或XAML中定义的任何其他内容来实现相同的功能.
更新:人们一直在想我为什么不想使用转换器.请以粗体显示.这不是我不想要的; 我只是想知道我是否可以使用StringFormat或任何其他XAML构造做同样的事情.
谢谢.
如果我可以使用 StringFormat 或 XAML 中定义的任何其他内容来实现相同的效果
StringFormat 特定于绑定标记扩展(实际上是绑定基础BindingBase.StringFormat Property (System.Windows.Data)),并最终使用 .Net 字符串格式,例如ToString("G3")(请参阅标准数字格式字符串),它会舍入且不截断;因此不可能在 Xaml 中覆盖此类功能。
在视图模型上创建另一个属性,它是一个关联string类型,它只是模仿所需的值,但被截断了。然后就这样绑定。
视图模型
public decimal TargetDecimal
{
get { return _TargetDecimal; }
set { _TargetDecimal = value;
OnPropertyChanged("TargetDecimal");
OnPropertyChanged("TargetValueTruncated"); }
}
// No error checking done for example
public string TargetValueTruncated
{
get { return Regex.Match(_TargetDecimal.ToString(), @"\d+\.\d\d\d").Value; }
}
Run Code Online (Sandbox Code Playgroud)
沙姆尔
<TextBlock Text="{Binding TargetDecimal, StringFormat=Original: {0}}"/>
<TextBlock Text="{Binding TargetDecimal, StringFormat=Modified: {0:#.###}}"/>
<TextBlock Text="{Binding TargetValueTruncated, StringFormat=Truncated: {0}}"/>
Run Code Online (Sandbox Code Playgroud)
结果
| 归档时间: |
|
| 查看次数: |
5374 次 |
| 最近记录: |