我有一个我用作ItemSource
的{{1}}的集合。 ItemSource是自定义对象(Cars)的列表,每个Car对象都有一个DataGrid
对象列表作为属性。在每个Licensor
对象中,都有一个必须在DataGrid中显示的字典集合。所以对象看起来像这样:
列出许可人
-
DataGrid在Licensor
中显示Car对象集合的前2个属性,但是我需要显示Licensor列表的字典属性中的值,其中键是Car ID。换句话说,我需要从TextBox
绑定“up”。所以我的DataGrid看起来像这样:
DataGridTemplateColumn
代码中的最后一列是我需要将“up”绑定回父对象以访问<DataGrid Name="MyDataGrid" ItemsSource="{Binding Cars}">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Car Name">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Name}" />
</DataTemplate>
</DateGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Car Make">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Make}" />
</DataTemplate>
</DateGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Licensor Name">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding Licensors}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding Name}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</DateGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!-- THE BELOW COLUMN IS THE ONE THAT NEEDS TO BIND 'UP' -->
<DataGridTemplateColumn Header="First License">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding Licensors}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding Licenses[{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}, Mode=FindAncestor}, Path=DataContext.CarId}][0]}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</DateGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
属性以用作Dictionary的键值的列。有没有人这样做过?我对最后一列的代码不起作用,我的想法是让当前列的祖先访问DataGrid的主要源或上下文,但这不起作用。
谢谢!