[英]Display a static number in a TextBlock using the current OS decimal separator
我认为这是一个超级基本的问题,但我无法让它运行。 我想在没有绑定的情况下在我的 WPF 视图中显示一个固定数字。 这个数字是 0.001 或德语 0,001。 见分隔符。 现在,如果我切换 UI 语言,数字分隔符应该更新为正确的一种语言。
<TextBlock>
<Run Text="0.001" />
<Run Text=" " />
...
</TextBlock>
这应该是极其微不足道的,我认为 StringFormat 应该满足需求,但正如我所说,我无法让它工作。 谢谢你的帮助
解决方案:感谢@Corentin Pane 向我指出解决方案。 正如他所说,我需要声明价值
<TextBlock>
<TextBlock.Resources>
<system:Double x:Key="MinValue">0.001</system:Double>
</TextBlock.Resources>
<Run Text="{Binding Source={StaticResource MinValue}, Mode=OneTime, StringFormat='N3', ConverterCulture={x:Static gl:CultureInfo.CurrentCulture}}" />
<Run Text=" " />
...
</TextBlock>
如果您希望 WPF 适当地格式化您的数字,它应该是从一开始的数字(如double
),而不是像"0.001"
这样的硬编码字符串。 您可以使用绑定到静态资源:
<TextBlock>
<TextBlock.Resources>
<system:Double x:Key="myFixedValue">0.001</system:Double>
</TextBlock.Resources>
<TextBlock.Text>
<Binding Source="{StaticResource myFixedValue}"/>
</TextBlock.Text>
</TextBlock>
具有以下命名空间:
xmlns:system="clr-namespace:System;assembly=mscorlib"
现在您可以担心格式了,正如评论中所述, 该线程提供了一些提示。 例如,您可以将Binding
更改为:
<Binding Source="{StaticResource myFixedValue}"
StringFormat="f"
ConverterCulture="{x:Static gl:CultureInfo.CurrentCulture}"/>
并添加
xmlns:gl="clr-namespace:System.Globalization;assembly=mscorlib"
宣言。
我有一个真实的例子,它输出“XXXXX from $0.00 to YYYY”作为工具提示。 这有点复杂,因为它显示了前导和尾随文本以及使用带有静态/常量数字的转换器。
背景:
代码:
<TextBlock>
<TextBlock.Resources>
<system:Double x:Key="ZERO">0.00</system:Double>
</TextBlock.Resources>
XXXXX from
<Run>
<Run.Text>
<MultiBinding Converter="{StaticResource CurrencyConverter}">
<Binding Source="{StaticResource ZERO}" Mode="OneWay"/>
<Binding Source="{x:Static properties:Settings.Default}" Path="CurrencySymbols" Mode="OneWay" />
</MultiBinding>
</Run.Text>
</Run>
to YYYY
</TextBlock>
总的来说,我建议通过在绑定中添加额外的 Mode="OneWay" 可以稍微改进接受的答案,因为它是一个静态数字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.