2015-06-12 4 views
1

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

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

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

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

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

(C#)

//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); 
+0

Являются ли данные, которые выходят из базы данных? Я немного смущен относительно того, почему вы используете datepicker для всех столбцов, поскольку я предполагаю, что хотя бы один столбец будет недействительным. –

+0

Вы правы, Parth. Большинство столбцов - это просто текстовые столбцы, содержащие различные фрагменты информации. Есть только 4 столбца, которые фактически содержат даты, и поэтому существует сочетание дат и текстовых данных. – caradon

+0

Можете ли вы попробовать выполнить привязку в порядке, указанном в этом сообщении: http://stackoverflow.com/a/1755556/2310818? –

ответ

0

Хорошо, я понял. Оказывается, привязка должна выполняться в коде 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», но ни один поиск, который я прошел, фактически не описал, что эта часть кода выполнена.

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