2013-11-09 150 views
0

我正在C#上编写一个WPF应用程序,该应用程序中有一个ListBox。该列表框具有以下格式在每行一个项目:WPF中的C#字符串填充

ID Name  Price 

我知道ID具有最大3个数字,最低之一,名称为少于25个字符,所以我要对齐这3个数值列,这样的事情:

194 Item Name 1   24.99 
1 Item Other Name  4.00 
13 Item Item Item  32.22 

等等...... 我试过几件事情:

string.Format("{0} {1} {2:0.00}", id.ToString().PadRight(4), name.PadRight(25), price) 

我尝试另一种选择:

string.Format("{0, -4} {1, -25} {2:0.00}", id, name, price) 

不幸的是,每次获得3个数字的ID时,它都会将文本向右推进一点,所以列未对齐。任何提示或想法如何解决?

+1

你为什么不使用DataGrid? – Alberto

+2

您应该在项目类中公开属性'ID','Name'和'Price',然后将您的ListBox绑定到这些项目的集合并使用适当的数据模板进行显示。请参阅MSDN上的[数据模板概述](http://msdn.microsoft.com/zh-cn/library/ms742521(v = vs.110).aspx)文章。 – Clemens

回答

2

随着WPF你必须有多个TextblocksStackPanel是的DataTemplate内的选项ListboxItemTemplate@Clemens有很好的链接。您也可以将StackPanels Orientation设置为Horizontal,以便全部在一行上。这样,您可以将TextAlignment设置为RightLeft。如果StackPanel无法正常工作,您也可以使用网格并设置GridColumns并将Textblocks放置到特定的列。

+0

谢谢!我是WPF新手,所以这些都是一些非常有用的提示! – mmvsbg