如何在列表框中将两个属性附加在一起?

本文关键字:两个 属性 加在一起 列表 | 更新日期: 2023-09-27 18:14:26

我有两个属性,例如日期和数字。我有一个列表框,当前一个接一个地绑定它们,所以现在有两行被两个属性占用。我怎么能一个一个地把它们排起来呢?xaml不允许我将两个属性绑定到一个文本块。

下面是我的列表框现在的样子:

数量日期

我想让它看起来像:

编号日期

我的列表框代码如下所示:
<ListBox HorizontalAlignment="Left" Margin="78,35,0,-32" Grid.Row="1" Width="300" ItemsSource="{Binding ListOfItems}" Grid.RowSpan="3" >
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <StackPanel>
                                <TextBlock Text="{Binding Number}" />
                                <TextBlock Text="{Binding Date, StringFormat={}{0:MM/dd/yy}}" />
                            </StackPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>

如何在列表框中将两个属性附加在一起?

您可以使用Run将多个属性绑定到一个文本块

 <TextBlock>
       <Run Text="{Binding Number}"></Run>
       <Run Text="{Binding Date, StringFormat={}{0:MM/dd/yy}}"></Run>
 </TextBlock>

MultiBinding

 <TextBlock>
        <TextBlock.Text>
            <MultiBinding StringFormat="{}{0} + {1}">
                <Binding Path="Number" />
                <Binding Path="Date" />
            </MultiBinding>
        </TextBlock.Text>
  </TextBlock>

如果我理解正确,你需要的是在你的StackPanel中使用水平方向。把你的DataTemplate改成下面的

<StackPanel Orientation="Horizontal">
    <TextBlock Text="{Binding Number}" />
    <TextBlock Text="{Binding Date, StringFormat={}{0:MM/dd/yy}}" />
</StackPanel>

您可能希望StackPanel水平堆叠项目:Orientation="Horizontal"

(病死率。http://wpftutorial.net/StackPanel.html, http://msdn.microsoft.com/en-us/library/ms752328 (v = vs.110) . aspx)