2

我有一个非常简单的位置读数——它只是一个应用了 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 文档,没有看到任何其他有用的信息。

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

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

4

2 回答 2

3

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

于 2011-01-04T23:07:02.287 回答
2

尝试{}{0,10:#,0}输入 10 个字符的字段。

但是请注意,如果字体不是固定宽度,这将产生奇怪的结果。我在Kaxaml中尝试过,它可以工作,但文本与比例字体不一致。

于 2011-01-04T23:25:32.440 回答