Привязка столбца шаблона таблицы данных (как столбца даты выбора) к столбцу данных

Я создаю программу доступа к базе данных, которая динамически создает столбцы сетки данных, а также динамически запрашивает данные на основе настроек учетной записи. У меня есть несколько датагрид, которые работают одинаково, и по большей части они работают отлично. Все мои текстовые столбцы привязаны к таблицам данных, которые я использую для хранения всех данных, однако я не могу понять, как заставить столбцы моего шаблона привязываться к столбцу данных. Я использую столбцы шаблона в качестве столбцов DatePicker, если это вообще помогает.

Визуальные элементы загружаются нормально: т.е. столбцы загружаются идеально в том смысле, что я могу видеть их и взаимодействовать с ними без проблем. Основная проблема заключается в привязке их к самим датателам. Любая помощь приветствуется. Пожалуйста, помните, что сетки данных всегда существуют, только динамические столбцы.

Вот основная версия того, что я сделал (в wpf)

<ResourceDictionary>
    <DataTemplate x:Key="datePickerTemplate">
        <DatePicker Text="{Binding}"/>                                      
    </DataTemplate>
</ResourceDictionary>

<DataGrid x:Name="datagrid_1" ItemsSource = "{Binding}" AutoGenerateColumns = "False">

(В с #)

//creates a text column (works just fine)
DataGridTextColumn textcolumn = new DataGridTextColumn();
textcolumn.Header = "text column";
textcolumn.Binding = new Binding("bind test column"); //text columns bind fine          
datagrid_1.Columns.Add(setexpmeetdatecolumn); 

//create template column
DataGridTemplateColumn templatecolumn = new DataGridTemplateColumn();
templatecolumn.Header = "date template column";
templatecolumn.CellTemplate = (DataTemplate)FindResource("datePickerTemplate");
(problem -> ) templatecolumn.Binding = new Binding("bind test column"); //this is what I need to accomplish, but am not finding any legible answers that are coherent to understand.     

datagrid_1.Columns.Add(templatecolumn); 

1 ответ

Решение

Хорошо, я понял это. Оказывается, связывание должно быть сделано в коде wpf, где создается шаблон для шаблона. На самом деле не должно быть привязки в коде для отдельного столбца. Сама таблица по-прежнему должна указывать на источник своих элементов, но не на столбец.

Путь привязки должен быть объявлен в шаблоне в wpf следующим образом:

<ResourceDictionary>
    <DataTemplate x:Key="datePickerTemplate">
        <DatePicker Text="{Binding Path = bind test column}"/>                                      
    </DataTemplate>
</ResourceDictionary>

и тогда выделенный код выглядит так:

DataGridTemplateColumn templatecolumn = new DataGridTemplateColumn();
templatecolumn.Header = "date template column";
templatecolumn.CellTemplate = (DataTemplate)FindResource("datePickerTemplate");
datagrid_1.Columns.Add(templatecolumn);

В итоге я понял это, посмотрев примеры кода, которые создали столбцы шаблонов данных, которые, казалось, успешно связывались с источниками данных. Я продолжал видеть "Binding Path", но ни один поиск, который я проходил, на самом деле не описывал, что эта часть кода выполнила.

Другие вопросы по тегам