2011-03-01 2 views
1

У меня есть datagrid из wpf Toolkit, с источником items привязаны к Observable<Item>. В классе Item у меня есть еще один список Observable<bool>, содержащий отображаемые значения.Двойной список - WPF Toolkit DataGrid

Я хочу отобразить эти значения в пользовательском шаблоне. Если возможно, я хочу показать и другие строки (которые являются нормальными свойствами).

Как это сделать? Спасибо за ответ.

Обновление (только для уточнения): второй список должен отображаться в обычных столбцах, а не как мастер/деталь. Представьте, что второй список будет содержать 2 bools, а класс Item содержит 1 дополнительное свойство. В этом случае должны быть показаны 3 столбца.

+0

Не могли бы вы уточнить, что вы хотите показать? Похоже, вы хотите создавать строки в зависимости от значения в Observable , например row1 для отображения элемента и последующих строк для отображения значений Observable в его столбце? ИЛИ вы хотите создать шаблон списка для объекта Observable в пользовательском интерфейсе? – RockWorld

+0

Я только что обновил вопрос, см. Выше. –

ответ

2

Вы можете создать второй datagrid и связать SelectedItem.Items от первой сетки до itemssource секунды. Или вы можете включить второй DataGrid в деталях строки вашего DataGrid, как это:

<DataGrid.RowDetailsTemplate> 
    <DataTemplate> 
     <DataGrid ItemsSource="{Binding Items}"/> 
    </DataTemplate> 
</DataGrid.RowDetailsTemplate> 

Посмотрите на this examples и this

+0

Привет, Сергей, спасибо за ваш ответ. Однако второй список должен отображаться в обычных столбцах, а не как мастер/деталь. Представьте, что второй список будет содержать 2 'bools', а класс Item содержит 1 дополнительное свойство. В этом случае должны быть показаны 3 столбца. –

+1

В этом случае я думаю, что вы можете создавать только строковые данные или создавать функцию, которая будет создавать дополнительные столбцы во время выполнения. Невозможно, чтобы шаблоны делали переменное количество столбцов, но вы можете попробовать создать собственный шаблон столбца –

+0

по этой ссылке: http://stackoverflow.com/questions/320089/how-do-i-bind-a-wpf-datagrid-to -a-variable-number-of-columns могут помочь вам в –

1

Вы можете написать вложенное свойство к сетке, которая создаст дополнительные столбцы для вас на сетке. Этот конструктор свойств определит привязку с отдельными значениями Observable.

+0

Звучит неплохо, но не могли бы вы указать его более подробно или создать небольшой пример? Поскольку я уже пробовал какое-то это решение, но мне это не удалось ... –

+1

1> Создать AttachedProperty для сетки, которая будет иметь тип Collection вашего ColumnType (это должен быть уникальный класс). 2> Определить обработчик обработчика свойств. 3> В обработчике событий найдите значения в списке. Создайте DataGridColumns для списка. определить привязку к столбцам и добавить их в коллекцию столбцов datagrid. – RockWorld

+0

Спасибо. Я попробую это и вернусь к вам позже. –

Смежные вопросы