WPF - 根据成员对象的类型绑定?

时间:2009-07-20 17:30:41

标签: 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可以切换网格列定义并显示新的标题吗?

提前致谢。

2 个答案:

答案 0 :(得分:4)

在“使用特定于类型的数据模板”一节中查看WPF博士的这篇文章。它很容易实现。 http://www.drwpf.com/blog/Home/tabid/36/EntryID/24/Default.aspx

答案 1 :(得分:1)

不,不,绝对没有。

DataGrid只能单个标题行和单个列集。它只是不支持你想要的功能。

DataGrid和ListView都是一样的。