2009-07-20 2 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 объекта в коллекции и каждый атрибут имени в каждом случае и удалить член атрибута в Vegetable? (это моя текущая реализация, однако код «Модель» можно было бы упростить, если я смогу использовать вышеописанное)

Мой вопрос типа сводится к: при каждом изменении типа объекта, на который указывает атрибут член, может WPF переключаться определения столбцов сетки, а также отображать новый заголовок?

Заранее благодарен.

ответ

1

Нет, нет, абсолютно нет.

DataGrid может содержать только одну строку заголовка и один столбец. Он просто не поддерживает функцию, которую вы хотите.

То же самое для DataGrid и ListView.

4

Да.

Ознакомьтесь с этой статьей доктора WPF в разделе «Использование шаблона данных конкретного типа». Это довольно легко реализовать. http://www.drwpf.com/blog/Home/tabid/36/EntryID/24/Default.aspx

+0

DataTemplateSelector позволит мне выбрать шаблон с помощью типа, однако мне нужен заголовок при каждом изменении типа. Это почти так, как будто я «группирую». Как насчет GroupStyle.HeaderTemplate? Разметка столбцов должна быть разной для каждой группы, но не могу ли я использовать DataTemplateSelector как для GroupStyle.HeaderTemplate, так и для элементов? – wtjones