Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
mikhail_g
188 / 143 / 27
Регистрация: 02.05.2011
Сообщений: 467
#1

DataTemplate для различных типов данных в DataGrid

24.02.2013, 18:08. Просмотров 958. Ответов 5
Метки нет (Все метки)

Добрый день!
Необходимо сделать различные DataTemplate для различных типов данных в DataGrid. Хочу чтобы это выглядело по аналогии с TreeView, когда для каждого типа данных,свой HierarchicalTemplate.
Т.е. в разметке хочу прописать
XML
1
2
<DataTemplate DataType="System:Int32" > ... </DataTemplate>
<DataTemplate DataType="System:System" > ... </DataTemplate>
Смысл этого действия такой, что я хочу чтобы для колонки содержащей, например DateTiime данные, автоматически генерились подсказки, возможность выбрать в календаре и т.п.
Что бы я не делал в разметке, ни хрена не подхватывается. Тип ItemsSource для биндинга грида DataView. AutoGenerateColumn=true;
Как можно сделать подобную вещь использую разметку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2013, 18:08
Ответы с готовыми решениями:

Обновление DataGrid в DataTemplate
Здравствуйте, коллеги. Есть такая проблема: &lt;ListBox Name=&quot;test&quot; ...

Класс-контейнер для хранения различных типов
Здравствуйте, товарищи!!! Подскажите, есть ли класс-контейнер для...

Функция для печати массивов различных типов.
Добрый день. Вопрос в следующем, задание сделать функцию которая будет...

Программно создать шаблон данных DataTemplate
Собственно вопрос озвучен. Есть ListBox, программно создается необходимое...

ComboBox, разные DataTemplate для списка и для SelectedItem
Приветствую. Мне нужно сделать так, чтобы в ComboBox элементы внутри списка...

5
KIA_1990
17 / 11 / 3
Регистрация: 25.02.2013
Сообщений: 48
25.02.2013, 12:10 #2
А тригерами пробовали?
0
mikhail_g
188 / 143 / 27
Регистрация: 02.05.2011
Сообщений: 467
25.02.2013, 12:20  [ТС] #3
На что тригер писать?) В стиле не получится. Как вариант в стиле для DataGridCell в свойство Template пихнуть ContentPresenter, и уже для него прописать ресурсы.
XML
1
2
3
4
5
<ContentPresenter>
<ContentPresenter.Resources>
<DataTemplate/>
</ContentPresenter.Resources>
 </ContentPresenter>
Но это не хорошо, т.к. DataGrid всё равно генерит DataGridTextColumn, и получается гвоздь.
0
KIA_1990
17 / 11 / 3
Регистрация: 25.02.2013
Сообщений: 48
25.02.2013, 14:12 #4
Я конечно мож не совсем понял проблему.
Вот такой выход могу предложить. В кастомном DataGrid переопределяем метод OnAutoGeneratingColumn и там уже разбираемся какой тип у нашей колонки.

Пример:

Если приходит тип данных DataTime то колонке устанавливаем шаблон "tmp", а если все остальное используем шаблон по умолчанию

C#
1
2
3
4
5
6
7
8
9
10
11
protected override void OnAutoGeneratingColumn(DataGridAutoGeneratingColumnEventArgs e)
        {
            e.Cancel = true;
            var column = new DataGridTemplateColumn();
            column.Header = e.Column.Header;
            if (e.PropertyType == typeof(DateTime))
                column.CellTemplate = (DataTemplate)FindResource("tmp");
            else
                column.CellTemplate = (DataTemplate)FindResource("default");
            Columns.Add(column);
        }
0
mikhail_g
188 / 143 / 27
Регистрация: 02.05.2011
Сообщений: 467
25.02.2013, 14:24  [ТС] #5
Спасибо за ваш ответ! Я так исделал в итоге.
Проблема была в том, что у всех DataColumnTemplate по умолчанию в качестве DataContext`a идёт не тип данных, который отображается в гриде, а DataRowView. А это значит, что Было недостаточно переопределить метод OnAutoGeneratingColumn. Ещё я создал новый тип темплейта для колонки.

Когда ядоделаю грид так, чтобы он был хорош во всём, я напишу пару слов о том, как я искал решение, и как его нашёл. А так же продам за бесплатно решение, поскольку я нигде не нашёл готовое решение, собрал по частям.
0
KIA_1990
17 / 11 / 3
Регистрация: 25.02.2013
Сообщений: 48
25.02.2013, 14:29 #6
Будет интересно, пишите!
0
25.02.2013, 14:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2013, 14:29

Применение нескольких checkbox к datagrid для фильтрации данных
Есть 2 чекбокса, чекбокс1 = Имя1, чекбокс2 = Имя1. В датагрид данные идут и бд....

Binding данных в Datagrid внутри Datagrid
Приветствую! Есть у меня такая модель данных: public class Group { ...

Реализовать массив списков различных пользовательских типов, с возможностью доступа к методам
Есть 151 список List&lt;&gt;, каждый имеет свой тип - пользовательский класс. Можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru