使用当前 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"
声明。
我认为这是一个超级基础的问题,但我做不到运行。我想在没有绑定的情况下在我的 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"
声明。