1

我已经搜索了很多答案,但找不到答案。
所以:我正在制作一个 Windows Phone 应用程序(针对 7.1),并且我有一个带有以下 ItemTemplate 的 ListBox

<ListBox.ItemTemplate>
    <DataTemplate>
        <Grid>
            <TextBlock x:Name="subjectName" Text="{Binding Path=name}" TextWrapping="Wrap" Foreground="White" FontSize="30" FontFamily="Segoe WP Semibold" Width="440" Height="99"/>
            <TextBlock x:Name="subjectCode" Text="{Binding Path=code}" FontSize="25" Width="107" HorizontalAlignment="Right" Margin="0,79,0,-12"/>
            <TextBlock x:Name="totalAbsences" Text="{Binding Path=absences}" FontSize="30" Width="107" HorizontalAlignment="Left" Margin="0,119,0,-65"/>
            <TextBlock x:Name="totalGrade" Text="{Binding Path=grades}" FontSize="30" Width="186" HorizontalAlignment="Right" Margin="0,119,0,-62" TextAlignment="Right"/>
            <Rectangle Fill="White" Height="3" Margin="0,0,0,-233" />
        </Grid>
    </DataTemplate>
</ListBox.ItemTemplate>

这就是发生的事情:

http://d.pr/i/liBK(这里还不能发布图片)

那么有什么办法可以让物品的高度自动调整呢?

4

1 回答 1

0

由于列表框中的每个项目都包含在 Grid 中,因此您可以指定Grid.RowDefinitions并为 Grid 中的每个子项分配特定的行号。

样本:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"></RowDefinition> <!-- Gets whatever height is necessary -->
        <RowDefinition Height="140"></RowDefinition> <!-- Specific Height -->
        <RowDefinition MaxHeight="*"></RowDefinition> <!-- Fills whatever space is left -->
    </Grid.RowDefinitions>
    <TextBlock x:Name="subjectName" Text="{Binding Path=name}" Grid.Row="0"/>
    <TextBlock x:Name="subjectCode" Text="{Binding Path=code}" Grid.Row="1"/>
    <TextBlock x:Name="totalAbsences" Text="{Binding Path=absences}" Grid.Row="2"/>
</Grid>

为了简单起见,我使用了您的一些代码并删除了一些额外的属性。随便玩一下,看看有什么用。

于 2013-09-04T02:55:57.023 回答