簡體   English   中英

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="&#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

為什么換行符放在我不希望的位置,以及如何在列表框中達到預期的輸出。

<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會在考慮新行的情況下呈現TextBlockText屬性,這將導致換行。

要實現所需的行為,您需要添加垂直布局元素:

<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM