2015-07-19 4 views
0

я помещаю данные в ListBox из списка объектов, используя этот простой код:Новая строка в 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> 

Символ новой строки может работать только внутри одного текстового блока, а не между двумя из них.

2

Вы можете поместить 2 TextBlocks в вертикальной StackPanel

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

также вместо 2 TextBlocks для priority вы можете использовать один с StringFormat

2

Environment.NewLine бы только ожидаемый эффект, если тексты находятся в то же самое TextBlock.
WPF затем отображает свойство Text объекта TextBlock с учетом новой строки, которая вызывает разрыв строки.

Для достижения желательного поведения, вы должны добавить вертикальный элемент макета:

<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> 
Смежные вопросы