使用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
,您可以只拥有文本块。