1

举个简单的例子:

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

据我所知,这应该在应用程序屏幕的左半部分显示第一个文本,在右半部分显示第二个文本。

取而代之的是,这两个文本是一个接一个。好像网格认为所有可用空间都是文本使用的空间。也许我需要更改列表框面板上的某些内容?

编辑:我试过这个:

    <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

4

1 回答 1

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>
于 2013-05-11T12:25:42.067 回答