ListBox中具有绑定数据的新行
本文关键字:数据 新行 绑定 ListBox | 更新日期: 2023-09-27 18:03:20
我使用以下简单代码将对象列表中的数据放入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
为什么换行符在我意想不到的地方,以及我怎么才能在列表框中达到预期的输出。
<DataTemplate>
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding title}" />
<StackPanel Orientation="Horizontal">
<TextBlock Text="Priorytet: " />
<TextBlock Text="{Binding priority}" />
</StackPanel>
</StackPanel>
</DataTemplate>
换行符只能在一个TextBlock内工作,不能在两个TextBlock之间工作。
您可以在垂直StackPanel
中放置2个TextBlocks
<StackPanel>
<TextBlock Text="{Binding title}" />
<TextBlock Text="{Binding priority, StringFormat='Priorytet: {0}'}" />
</StackPanel>
也可以使用一个StringFormat
来代替priority
的2个TextBlocks
如果文本在同一个TextBlock
中,则Environment.NewLine
仅具有预期效果
然后,WPF在考虑新行的情况下呈现TextBlock
的Text
属性,这将导致换行。
为了实现所需的行为,您必须添加一个垂直布局元素:
<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>