在xaml中显示数据表时出现列宽问题

时间:2011-03-06 06:13:49

标签: wpf xaml windows-phone-7

我正在尝试在Windows Phone 7上显示一个类似于此的数据表(因此我没有DataGrid控件:

(The columns are: Rank, Score, Win-Loss, Name.)

7 43 22-7 Aaron
2 13  4-7 Beth
5 42  3-1 Clark

等等。我使用带有ItemTemplate的ListBox来查询值并将其打印出来,使用Grid格式化列表。但是,每个网格条目都是独立的!我希望所有列都排成一行,但是当元素大小不同时,它就不会对齐。

这是我正在使用的代码:

<ListBox x:Name="MyListBox" ItemsSource="{Binding AllPlayers}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Column="0" Margin="10,0,10,0" Text="{Binding Rank}"/>
                <TextBlock Grid.Column="1" Margin="10,0,10,0" Text="{Binding Score}"/>
                <StackPanel Grid.Column="2" Margin="10,0,10,0" Orientation="Horizontal">
                    <TextBlock Grid.Column="2" Text="{Binding Wins}"/>
                    <TextBlock Grid.Column="2" Text="-"/>
                    <TextBlock Grid.Column="2" Text="{Binding Losses}"/>
                </StackPanel>
                <TextBlock Grid.Column="3" Margin="10,0,10,0" Text="{Binding Name}"/>
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

有更好的方法吗?我可以手动设置“网格”列上的像素宽度,但如果可能的话,我宁愿让它自动计算出宽度。

1 个答案:

答案 0 :(得分:2)

由于WP7支持一个固定的屏幕像素宽度,因此您可以为每列设置精确的宽度。使用什么宽度 - 取决于内容,这取决于你,但这将是保持它们一个尺寸的方式。