使用Silverlight for Windows Phone 7创建表

我想在WP7上创建一个表。 这是我目前使用带有网格作为数据模板的ListBox的方法。

                   

问题是,生成的表的列大小不同。 Grid的列定义独立于其他行应用于每一行。 这意味着,如果textBlock1中有长文本,则列0将更大。 在下一行中,textBlock1中可能有一个较短的文本,导致列0也比前一行中的列0短。

如何将所有行中的列大小相等? 我不想使用固定宽度,因为当方向从纵向更改为横向时,列将自动resize。

有HeaderedItemsControl,但据我所知,它不适用于Windows Phone 7?

这是一个棘手的问题! 在WPF中,存在SharedSizeGroup的概念,它允许您跨多个网格共享列宽,但这在Silverlight中不可用。

网上有一些解决方法:

http://www.scottlogic.co.uk/blog/colin/2010/11/using-a-grid-as-the-panel-for-an-itemscontrol/

http://databaseconsultinggroup.com/blog/2009/05/simulating_sharedsizegroup_in.html

虽然都不是简单的解决方案

您也可以尝试Mike的AutoGrid:

http://whydoidoit.com/2010/10/06/automatic-grid-layout-for-silverlight/

以下是我使用ColinE建议的SharedSizeGroup的解决方案。

                        

甚至可以通过TextBlock的MaxWidth属性控制每列的​​最大值。 SharedSizeGroups确保TextBlocks在每一行中具有相同的大小。

你可以使用WrapPanel 。 在Datatemple设置以下Datatemple ,您可以只拥有文本块。