2015-07-19 70 views
0

我是從對象的列表使用這個簡單的代碼將數據列表框:在ListBox中新行綁定數據

<ListBox Name="lbxListaZadan"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel xml:space="preserve" Orientation="Horizontal"> 
       <TextBlock Text="{Binding title}" /> 
       <TextBlock Text="&#10;" /> 
       <TextBlock Text="Priorytet: " /> 
       <TextBlock Text="{Binding priority}" /> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

代替預期輸出:

Task1 
Priorytet: 1 
Task2 
Priorytet:2 
Task3 
Priorytet: 3 

我越來越:

Task1Priorytet: 1 

Task2Priorytet: 2 

Task3Priorytet: 3 

爲什麼是我不希望它是一個地方換行,到底怎樣才能達到我在李的預期輸出stbox。

+0

你所得到的新行......看線之間的差距。 –

回答

2
<DataTemplate> 
    <StackPanel Orientation="Vertical"> 
     <TextBlock Text="{Binding title}" /> 
     <StackPanel Orientation="Horizontal">       
     <TextBlock Text="Priorytet: " /> 
     <TextBlock Text="{Binding priority}" /> 
     </StackPanel> 
    </StackPanel> 
</DataTemplate> 

換行符只能在單個TextBlock中工作,而不能在兩個TextBlock之間工作。

2

你可以把2 TextBlocks垂直StackPanel

<StackPanel> 
    <TextBlock Text="{Binding title}" /> 
    <TextBlock Text="{Binding priority, StringFormat='Priorytet: {0}'}" /> 
</StackPanel> 

也代替2 TextBlockspriority,您可以使用一個與StringFormat

2

Environment.NewLine只會有預期的效果,如果文字都同樣的TextBlock
WPF然後用TextBlockText屬性記住新行,這會導致換行。

爲了達到想要的行爲,你必須添加一個垂直佈局元素:

<ListBox Name="lbxListaZadan"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel xml:space="preserve" Orientation="Vertical"> 
       <TextBlock Text="{Binding title}" /> 
       <StackPanel Orientation="horizontal"> 
        <TextBlock Text="Priorytet: " /> 
        <TextBlock Text="{Binding priority}" /> 
       </StackPanel> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox>