我有以下问题: 我必须在某种网格中显示表格数据。如何使用WPF显示真正的表格数据?
说A类是一个数据项目,属性Foo和酒吧,我有一个列表项目列表或这样的事情。我想在网格中显示这些项目,其中具有相同Foo的项目位于一列中,并且具有相同Bar的项目位于一行中。基本。简单。我想?
我最初的尝试是创建一个ItemsControl,使用Grid作为ItemsPanelTemplate,以及一个ItemsTemplate,其中我将Grid.Row和Grid.Column附加属性绑定到A.Foo和A.Bar,使用IValueConverters将特定带有特定列的Foo,例如转换器将在一列Columns数组中查找Foo值并返回正确的索引。 问题是,构建Grid的行和列定义。由于它们是完全动态的(我不知道在设计时,Foo's和Bar's会在源集合中),所以我无法在xaml文件中定义它们。但是在运行时,ItemsControl实际上并不提供对当前ItemsPanel实例的访问。 我发现的唯一方法是使用VisualTreeHelper.GetChild的一种肮脏的方式,我设法得到ItemsPanel实例并创建所需的Row-和ColumnDefinitions,但我的ItemTemplate-d项目不会呈现在正确的行和列中,尽管我的转换器返回了正确的列/行索引。也许我并不真正了解ItemsControl如何在内部工作,但事情是,我的想法没有了。
有人建议将ListView与GridView一起使用,将我的条目在另一个对象中分组,这将使我无法动态创建行,但动态创建列看起来相当复杂。
有没有人有想法或至少有提示?我错过了什么明显的东西?
好的我刚刚发现,ItemsControl在我的ItemTemplate和我的ItemsPanelTemplate之间使用ContentPresenter ...所以我的ItemTemplate中附加的Grid.Row和Grid.Column属性无法工作?我如何解决这个问题? – Cice 2010-08-25 14:29:45
Foo和Bar有多少个值?你可以在枚举中使用值来将属性转换为行/列号吗? – CodeWarrior 2010-08-25 14:40:35