ListBox中包含绑定数据的新行

时间:2015-07-19 09:03:28

标签: c# wpf 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

为什么换行符在我不希望的地方,以及我怎么能达到列表框中的预期输出。

3 个答案:

答案 0 :(得分:2)

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

换行符只能在单个TextBlock中工作,而不能在其中两个之间工作。

答案 1 :(得分:2)

您可以将2 TextBlocks放在垂直StackPanel

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

而不是TextBlocks priority,您可以使用StringFormat

答案 2 :(得分:2)

如果文本位于同一Environment.NewLine内,则TextBlock只会产生预期的效果。
然后,WPF会在考虑新行的情况下呈现Text的{​​{1}}属性,从而导致换行。

要实现想要的行为,您需要添加一个垂直布局元素:

TextBlock