[英]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之間工作。
您可以在垂直StackPanel
放置2個TextBlocks
<StackPanel>
<TextBlock Text="{Binding title}" />
<TextBlock Text="{Binding priority, StringFormat='Priorytet: {0}'}" />
</StackPanel>
也可以代替2個TextBlocks
獲得priority
,可以將其中一個與StringFormat
如果文本在同一個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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.