C# 将字符串文本格式化到特定位置
在Windows Phone 8项目中,我有以下带有一些数据的列表框: 我想列出所有和我画的红线对齐的日期。基本上,我希望它在开始后打印日期N个空格,而不是在温度之后 现在我有了这个,但我不理解C# 将字符串文本格式化到特定位置,c#,windows-phone-8,position,string-formatting,C#,Windows Phone 8,Position,String Formatting,在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].dat
{}
的格式化是如何工作的
for (int i = 0; i < values.Length; i++)
{
listboxData.Items.Add(String.Format("{0,-12}{1,8}",values[i].value + unit, values[i].date));
}
for(int i=0;i
你能给我解释一下它是如何工作的以及我的问题的可能解决方案吗?我想也许你的格式字符串是对的,但问题是真正的字体类型。并非所有字符的宽度都相同。Courier new可以工作(所有字符都具有相同的像素宽度,包括空格),但这也可能不是您想要的。可能必须使用两列事件。。甚至是一张桌子 比如说。我将打印10个字符的I,然后打印一个 iiiiiiiiii AAAAAAAAAA
看到宽度上的差异了吗?堆栈溢出正在使用true type字体显示我的帖子。如果您使用的是列表框,我建议更改ItemTemplate以匹配所需的格式。看起来您已经有了一个包含临时读取和读取时间的对象集合(您的值集合)。因此,将ItemsSource属性设置为该集合。您可以在代码中执行此操作
listBox.ItemsSource = values;
或者可以在xaml中实现
<ListBox ItemsSource="{Binding values}" />
以上假设您有一个DataContext,该DataContext具有包含临时读数的values属性
下一步是更改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>
想到了你的解决方案看起来很有希望,但是我的时间和日期相互重叠:/@sparcopt似乎忘记了在每个文本块上指定列。只需为第一个文本块添加Grid.Column=“0”
,为第二个添加Grid.Column=“1”
。修复了!谢谢@AlaaMasoud!