使用当前 OS 小数分隔符在 TextBlock 中显示静态数字

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"

现在您可以担心格式问题,正如评论中所述,this thread 提供了一些提示。例如,您可以将 Binding 更改为:

<Binding Source="{StaticResource myFixedValue}"
         StringFormat="f"
         ConverterCulture="{x:Static gl:CultureInfo.CurrentCulture}"/>

并添加

xmlns:gl="clr-namespace:System.Globalization;assembly=mscorlib"

声明。