WPF.Net 4.0 MVVM将DataGrid单元格绑定到数组元素对象
我正在创建一个时间表应用程序,其中有一个员工列表和一个分配时间的编码列表 我已经创建了一个DataMatrix,我已经让网格看起来很好,除了小时的数据输入 网格看起来像WPF.Net 4.0 MVVM将DataGrid单元格绑定到数组元素对象,wpf,arrays,datagrid,binding,matrix,Wpf,Arrays,Datagrid,Binding,Matrix,我正在创建一个时间表应用程序,其中有一个员工列表和一个分配时间的编码列表 我已经创建了一个DataMatrix,我已经让网格看起来很好,除了小时的数据输入 网格看起来像 Work Coding | AL | Sick | Job1 | Job2 ____________________________________________ Employee1 | | | | Employee2 | | | | p
Work Coding | AL | Sick | Job1 | Job2
____________________________________________
Employee1 | | | |
Employee2 | | | |
public class DataMatrix : IEnumerable
{
public List<MatrixColumn> Columns { get; set; }
// public List<object[]> Rows { get; set; }
public List<TimesheetDetail[]> Rows { get; set; }
IEnumerator IEnumerable.GetEnumerator()
{
return new GenericEnumerator(Rows.ToArray());
}
}
我想要它看起来像什么
Work Coding | AL | Sick | Job1 | Job2
____________________________________________
Employee1 | | | 2 |
数据模板如下所示
<DataTemplate x:Key="TimesheetEntryDetailCellTemplate"
DataType="{x:Type data:TimesheetDetail}">
<Grid>...
<Label Content="ST" />
<TextBox x:Name="txtStandardTime"
Text="{Binding Path=HoursWorked, ...}"></TextBox>
</Grid>
</DataTemplate>
...
通过调试,我得到了一个要绑定到的TimesheetDetail[]对象
我想我需要像这样的东西
<TextBox Text="{Binding Source = TimesheetDetail[ColumnDisplayIndex].HoursWorked}" />
有人知道如何让单元格模板绑定到它所连接的元素吗
提前感谢一种方法是通过代码创建动态绑定表达式并生成datagrid列(xaml中的AutoGenerateColumns=“False”),apporx。下面给出的代码(未编译):
公共void AddColumns(字符串[]myHeaderList,列表myList)
{
对于(int i=0;i
{
DataGridTemplateColumn gridCol=新建DataGridTemplateColumn();
gridCol.Header=myHeaderList[i];
gridCol.CellTemplate=
(数据模板)this.Resources[“TimesheetEntryDetailCellTemplate”];
gridCol.Binding=新绑定(“[”+i+“].hoursweed”);
_dataGrid.Columns.Add(gridCol);
}
}
列表myList=
_dataGrid.ItemsSource=myList
在XAML中,需要将AutoGenerateColumns设置为false:
<TextBox Text="{Binding Source = TimesheetDetail[ColumnDisplayIndex].HoursWorked}" />