我有以下問題: 我必須在某種網格中顯示錶格數據。如何使用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