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

时间:2014-07-23 12:16:56

标签: c# wpf xaml data-binding listbox

我有两个属性,例如日期和号码。我有一个列表框,目前一个接一个地绑定它们,所以现在这两个属性占用了两行。我怎样才能将它们逐一排列? 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>

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

如果我理解正确,您需要在StackPanel中使用水平方向。将您的DataTemplate更改为以下内容:

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

答案 2 :(得分:0)

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

(cfr。http://wpftutorial.net/StackPanel.htmlhttp://msdn.microsoft.com/en-us/library/ms752328(v=vs.110).aspx