ListBox 中包含绑定数据的新行
New line in ListBox with bound data
我正在使用以下简单代码将对象列表中的数据放入 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 之间使用。
你可以把 2 TextBlocks
放在垂直 StackPanel
<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>
我正在使用以下简单代码将对象列表中的数据放入 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 之间使用。
你可以把 2 TextBlocks
放在垂直 StackPanel
<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>