在WPF中填充数字显示

时间:2011-01-04 22:48:55

标签: wpf string ivalueconverter formatter

我有一个非常简单的位置读数 - 它只是一个应用了Style的TextBlock。在那个Style中,我只是这样设置它(有更多的属性,但我把它们拿出来以简洁):

    <Style x:Key="NumberStyle" TargetType="{x:Type TextBlock}">
        <Setter Property="TextAlignment" Value="Center" />
    </Style>

现在,我有一个使用此样式的显示器,它将显示0.0到30000.0之间的数字。问题在于,由于我将文本居中,因此数字(如果快速变化)会在整个地方跳跃,这有点令人不安。我想格式化我的字符串,以便它不会这样做。

我在XAML中试过这个ConverterParameter:

ConverterParameter='\{0:00000.0\}'

虽然它正确填充,但我会得到像00032.5这样的数字。然后我将0替换为#,但最终表现得像{0:0.0}。我查看了MSDN docs并没有看到任何有用的内容。

我唯一能想到的就是我必须写一个新的IValueConverter才能做到这一点。换句话说,在Convert()方法中,我必须使用parameter并将其解析为我自己的特殊字符。然后当我检测到这个时,用空格替换丢失的数字。

然而,我在这里真正想要学习的是,这可以通过简单地使用我不知道的格式字符串中的不同字符来完成吗?

2 个答案:

答案 0 :(得分:3)

我认为你需要像{0,7}这样的东西(在七个位置显示参数,用空格填充左边)。但是,即使在这种情况下,对于不跳转的文本,您需要使用等宽字体,或者至少使用空格字符宽度等于数字宽度的字体。

答案 1 :(得分:1)

请尝试{}{0,10:#,0}获取10个字符的字段。

但请注意,如果字体不是固定宽度,则会产生奇怪的结果。我在Kaxaml中尝试了它,它可以正常工作,但文本没有与比例字体对齐。