List(Of String)中的WPF string.format不起作用

时间:2013-09-29 16:15:58

标签: wpf vb.net xaml

我正在尝试使用XAML创建发票flowdocument。

我正在使用数据绑定来填充ItemsControl,它的工作原理应该如此,但我的文本没有对齐。使用:

String.Format("{0,-5}x   {1,-25}  €{2}", QT, "Desc", "Price")

将它写入文本文件可以很好地工作,但每当我把它放在List(Of String)中时它就不起作用了。我在这里做错了什么?

  Dim myCollection As New List(Of String)()

    Dim derpa As String
    derpa = String.Format("{0,-5}x   {1,-25}  €{2}", 4, "PYAH", "123")
    myCollection.Add(derpa)
    derpa = String.Format("{0,-5}x   {1,-25}  €{2}", 44, "PYAH2", "123")
    myCollection.Add(derpa)

    derpa = String.Format("{0,-5}x   {1,-25}  €{2}", 232, "PYAH2we", "33232")
    myCollection.Add(derpa)

    derpa = String.Format("{0,-5}x   {1,-25}  €{2}", 12, "asdasd", "213123")
    myCollection.Add(derpa)

    For Each item In myCollection
        derpaderpa.Text &= vbNewLine & item 'WPF Textblock

    Next

是我当前的代码。

1 个答案:

答案 0 :(得分:0)

文本没有对齐,因为您使用proportional font, not a fixed width font显示它。对于比例字体,并非所有字符都具有相同的宽度 - 特别是空格小于字母(并且字母大小不同)。文本编辑器显示为对齐,因为它使用的是固定宽度字体,其中所有字符的大小相同。如果您要在MS Word中打开文本文件,您将看到它没有排队。

您可以将ItemsControl中的字体更改为固定宽度字体(例如Lucidia Console)。你可能想要的是一个带有嵌入式GridView的ListView,它将每个信息项显示为一个单独的列 - 用于排列数据。