我有两个属性,例如日期和号码。我有一个列表框,目前一个接一个地绑定它们,所以现在这两个属性占用了两行。我怎样才能将它们逐一排列? 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>
答案 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.html,http://msdn.microsoft.com/en-us/library/ms752328(v=vs.110).aspx)