2013-07-06 23 views
0

在Windows Phone 8的項目,我有以下列表框的一些數據:格式字符串文本到特定位置

a busy cat

我想列出排隊與紅線我畫的所有日期。基本上我希望它在開始後打印日期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

[PadLeft](http://msdn.microsoft.com/en-us/library/system.string.padleft(V = vs.71).aspx)浮現在腦海 – Sayse

回答

0

我想也許你的格式字符串是正確的,但問題是真正的字體。並非所有的字符都是相同的寬度。新的信使將工作(所有字符相同的像素寬度,包括空格),但這可能不是你想要的。可能必須使用兩列事件。也許是一張桌子?

例如。我要打印我的10個字符,然後的

IIIIIIIIII

AAAAAAAAAA

見寬度之差?堆棧溢出使用真正的字體來顯示我的帖子..

1

如果您使用的是一個ListBox,那麼我會建議更改ItemTemplate以匹配您想要的格式。它看起來像你已經有一個對象的集合,包含讀取的溫度讀數和時間(你的值集合)。因此將ItemsSource屬性設置爲該集合。您可以在代碼

listBox.ItemsSource = values; 

做到這一點你也可以在XAML

<ListBox ItemsSource="{Binding values}" /> 

做上述假設你有一個具有包含您的臨時讀數值屬性的DataContext。

下一步是改變的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> 
+0

您的解決方案看起來很有前途,但是我的臨時表和日期相互之間出現:/ – sparcopt

+0

@sparcopt看起來像OP忘記指定每個「TextBlock」上的列。爲第一個「TextBlock」添加'Grid.Column =「0」',爲第二個添加'Grid.Column =「1」'。 –

+0

固定!謝謝@AlaaMasoud! –