Привязка столбца шаблона таблицы данных (как столбца даты выбора) к столбцу данных
Я создаю программу доступа к базе данных, которая динамически создает столбцы сетки данных, а также динамически запрашивает данные на основе настроек учетной записи. У меня есть несколько датагрид, которые работают одинаково, и по большей части они работают отлично. Все мои текстовые столбцы привязаны к таблицам данных, которые я использую для хранения всех данных, однако я не могу понять, как заставить столбцы моего шаблона привязываться к столбцу данных. Я использую столбцы шаблона в качестве столбцов 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", но ни один поиск, который я проходил, на самом деле не описывал, что эта часть кода выполнила.