举个简单的例子:
<Grid>
<ListBox>
<ListBox.ItemTemplate>
<DataTemplate >
<Grid HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*" />
<ColumnDefinition Width="0.5*" />
</Grid.ColumnDefinitions>
<TextBlock Text="FIRST TEXT" />
<TextBlock Grid.Column="1" Text="SECOND TEXT" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
a
a
</ListBox>
</Grid>
据我所知,这应该在应用程序屏幕的左半部分显示第一个文本,在右半部分显示第二个文本。
而不是这两个文本是一个接一个。好像网格认为所有可用空间都是文本使用的空间。也许我需要在Listbox面板上更改一些内容?
编辑:我试过这个: <Style TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Grid>
<ContentPresenter HorizontalAlignment="Stretch" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
即使它工作,它也打破了listboxitem的选定功能:(
顺便说一下,我正在使用Windows pone 8
答案 0 :(得分:3)
使用HorizontalContentAlignment="Stretch"
应用于ListBox。请参阅下面列出的解决方案注意:为方便起见,我添加了单独的Background="AntiqueWhite"
和Background="Aqua"
,因此您可以看到两个TextBlock的实际大小。
<Grid>
<ListBox HorizontalContentAlignment="Stretch">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*" />
<ColumnDefinition Width="0.5*" />
</Grid.ColumnDefinitions>
<TextBlock Text="FIRST TEXT" Background="AntiqueWhite"/>
<TextBlock Grid.Column="1" Text="SECOND TEXT" Background="Aqua"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
a
a
</ListBox>
</Grid>