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

发布于 2024-10-20 09:37:40 字数 1622 浏览 1 评论 0原文

我正在尝试在 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 来查询值并将其打印出来,使用网格来格式化列表。但是,每个网格条目都是单独的!我希望所有列都对齐,但是当元素大小不同时,它不会对齐,

这是我正在使用的代码:

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

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

I'm attempting to display a table of data which looks like this on Windows Phone 7 (thus I don't have the DataGrid control:

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

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

And so on. I have used a ListBox with an ItemTemplate to query the values and print them out, with a Grid to format the list. However, each grid entry is separate! I want the columns to all line up, but when an element size is not the same size, it isn't aligned.

This is the code I am using:

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

Is there a better way to do this? I could set the pixel width on the "Grid" column manually, but I'd rather have it auto-figure out the width, if possible.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鸢与 2024-10-27 09:37:40

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

Since WP7 supports one fixed screen pixel width, you can set exact width for each column. What width to use - that's up to you, depending on the content, but that would be the way to keep them all one size.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文