在Windows Phone 8项目中,我有以下列表框和一些数据:
我想列出所有与我画的红线对齐的日期。基本上我希望它在开始后打印日期N个空格,而不是在温度之后。
现在我有这个,但我不明白{}
的格式是如何工作的。
for (int i = 0; i < values.Length; i++)
{
listboxData.Items.Add(String.Format("{0,-12}{1,8}",values[i].value + unit, values[i].date));
}
你能解释一下它的工作原理以及解决问题的可能方法吗?
答案 0 :(得分:1)
如果您使用的是ListBox,那么我建议您更改ItemTemplate以匹配您想要的格式。看起来您已经拥有一组包含临时读数和读取时间的对象(您的值集合)。因此,将ItemsSource属性设置为该集合。您可以在代码中执行此操作
listBox.ItemsSource = values;
或者你可以在xaml
中完成<ListBox ItemsSource="{Binding values}" />
以上假设您有一个DataContext,其value属性包含您的临时读数。
下一步是更改ItemTemplate以适合您的格式
<ListBox ItemsSource="{Binding values}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="55"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding value, StringFormat={}{0}°}"/>
<TextBlock Text="{Binding date, StringFormat={}{0:MM/dd/yyyy hh:mm}}"
Grid.Column="1" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
答案 1 :(得分:0)
我想也许你的格式字符串正确,但问题是真正的字体。并非所有字符的宽度都相同。 Courier new可以工作(所有字符的像素宽度相同,包括空格),但这可能不是你想要的。可能必须使用两列事件..甚至可能是一张桌子?
例如。我将打印10个字符,然后打印A
IIIIIIIIII
AAAAAAAAAA
看到宽度的差异?堆栈溢出使用真实类型字体来显示我的帖子..