尝试将0.1500显示为15.00。我的C#属性是小数,我的xaml代码是<TextBox Text="{Binding ClosingRate, StringFormat={}{0:P2}}"/>
我希望格式将小数点向右移动2个位置,而不必更改小数值,也不需要前导0.&#34; P2&# 34;格式让我接近,但显示20.00%,我不想要百分号。
答案 0 :(得分:2)
你不能通过简单的StringFormat来做到这一点。它为您提供仅一些预定义的选项,其中有趣的极端情况几乎没有可扩展性。您想要做的是有效*=100
您的价值,并且不会通过绑定或格式直接支持该类型,因为该算术操作。
事实上,P /%实际上也是* = 100,这可能只是一个巧合。你可以破解它跳过%,但如果在3天内你有另一个你需要移动的地方,那么它根本无济于事。它由不同的数字组成。
解决方案是......将显示的值乘以100.您不需要更改源值 - 这只是强制UI读取与源不同的值的问题之一。
两种最简单的方法是:
ClosingRateFormatted
,它将是只读的,并将返回ClosingRate * 100(只需记住通知两者的更改现在强>属性)使用Converter,更改通知中不需要进行任何更改(与第一个选项相反),但使用转换器肯定比创建新的只读属性更难。