我使用这个简单的代码从对象列表中将数据放到ListBox中:
<ListBox Name="lbxListaZadan">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel xml:space="preserve" Orientation="Horizontal">
<TextBlock Text="{Binding title}" />
<TextBlock Text=" " />
<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
为什么换行符在我不希望的地方,以及我怎么能达到列表框中的预期输出。
答案 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