如何在列表框中对齐字符串?

时间:2012-06-27 12:15:23

标签: c# vb.net c#-3.0

我将值绑定到列表框但字符串没有以正确的格式显示。

从我的字符串开始,如

abc               10
abcd              20
asdfas            30

我使用填充

将固定长度设置为第一个30的字符串
str1.PadRight(30) + str2.PadRight(2)

然后我也得到这样的价值

abc     10
abcd        20
asdfas            30

请建议如何在字符串

之间放置相同的空格

3 个答案:

答案 0 :(得分:2)

Windows用户界面通常使用可变宽度字体,因此您不能只使用空格填充给定列以使文本排成一行。

您需要将ListBox设置为使用等宽字体(例如Courier或Lucida Console),使用支持列的ListView(或类似),或实现所有者绘制的项目,以便您可以控制项目的方式显示,将文本拆分为以列形式绘制。

答案 1 :(得分:0)

Windows窗体ListBox支持多列。在constructor的文档中有一个例子。

虽然这可能不适用于数据绑定。在这种情况下,您可能需要使用ListView代替。

答案 2 :(得分:0)

我会创建一个包装文本的ViewModel和一个数字:

class MyViewModel
{
    public string Text { get; set; }
    public int Number { get; set; }
}

然后给ListBox ItemTemplate执行布局:

<ListBox>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <DockPanel>
                <TextBlock DockPanel.Dock="Left"
                           Text="{Binding Text}"/>
                <TextBlock DockPanel.Dock="Right"
                           Text="{Binding Number}"/>
            </DockPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
相关问题