2009-07-20 57 views
1

可以說,該模型是這樣的:(植物更容易比電話系統的縮寫來描述)WPF - 基於成員對象的類型綁定?

class CornAttribs 
    dim numKernels 

class OnionAttribs 
    dim numLayers 
    dim color 

class Vegetable 
    Implements INotifyPropertyChanged 
    ....snip notify related stuff 
    dim name as string 
    dim attrib as object 'point to Corn or Onion 

在運行時的數據看起來是這樣的:

Vegetables: 
    "corn1", numKernels = 60 
    "onion1", layers = 10, color = white 
    "corn2", numKernels = 80 

在我的形式我想有一個綁定到CollectionView的網格來顯示某些命名的蔬菜。讓我們只是說這個例子中沒有過濾器,但可能會有。我想網格輸出看起來像這樣:

=========================== 
Onion | Layers | Color 
-------------------------- 
onion1 |  10 | white 
=========================== 
Corn | Kernels 
-------------------------- 
corn1 |  60 
corn2 |  80 
========================== 

還有就是「ATTRIB」有限數量的對象,因此我會對每個網格不同的標記。

可以繼續沿着這條路走下去,或者如果我應該讓所有3個對象都是集合並且在每個對象中都有name屬性並刪除Vegetable中的attrib成員? (這是我目前的實現,但是如果我能夠使用上面的代碼,可以簡化「模型」代碼)

我的問題歸結爲:attrib指向的對象類型的每次更改成員,可以WPF切換網格列定義並且還顯示一個新的頭部?

在此先感謝。

回答

1

不,絕對不是。

DataGrid只能設置單個標題行和單個列。它只是不支持你想要的功能。

這對DataGrid和ListView都是一樣的。

4

是的。

看看這篇Dr. WPF文章「使用類型特定的數據模板」一節。這很容易實現。 http://www.drwpf.com/blog/Home/tabid/36/EntryID/24/Default.aspx

+0

DataTemplateSelector允許我通過類型選擇一個模板,但是我需要在每次類型更改時使用一個頭。這就好像我是「分組」一樣。 GroupStyle.HeaderTemplate怎麼樣?每個組的列布局需要不同,但是我可以在GroupStyle.HeaderTemplate和項目中都不使用DataTemplateSelector嗎? – wtjones 2009-07-20 19:54:43