我有以下DataGrid:
<DataGrid x:Name="dgOuter"
ItemsSource="{Binding}" AutoGenerateColumns="false">
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<DataGrid ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGridRow}}}"
AutoGenerateColumns="false">
<DataGridTextColumn Header="ID" Binding="{Binding ID.oldValue}" />
<DataGridTextColumn Header="Name" Binding="{Binding Name.oldValue}" />
<DataGridTextColumn Header="Gender" Binding="{Binding Gender.oldValue}" />
</DataGrid>
</StackPanel>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding ID.newValue}" />
<DataGridTextColumn Header="Name" Binding="{Binding Name.newValue}" />
<DataGridTextColumn Header="Gender" Binding="{Binding Gender.newValue}" />
</DataGrid.Columns>
</DataGrid>外部数据网格的DataContext是一个包含ID、名称和性别属性的对象列表。这些也是包含oldValue和newValue的对象。
目标: RowDetails应该显示与所选行完全相同的行,但是显示的是newValue而不是oldValue。
问题:我不知道如何指向选定行的DataBound项。
我已经使用TextBoxes而不是新的内部DataGrid实现了这一点,但是这确实是很多代码。
内部DataGrid的正确绑定是什么?
发布于 2016-07-03 11:42:09
内部DataGrid的绑定不起作用,因为ItemSource应该绑定到集合。可以使用转换器将SelectedItem包装在集合中(例如,列表)。
<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False">
<DataGrid.Resources>
<local:ToCollectionConverter x:Key="ToCollectionConverter" />
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding ID.newValue}" />
<DataGridTextColumn Header="Name" Binding="{Binding Name.newValue}" />
<DataGridTextColumn Header="Gender" Binding="{Binding Gender.newValue}" />
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid ItemsSource="{Binding Converter={StaticResource ToCollectionConverter}}"
AutoGenerateColumns="False"
HeadersVisibility="None"
>
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding ID.oldValue}" />
<DataGridTextColumn Header="Name" Binding="{Binding Name.oldValue}" />
<DataGridTextColumn Header="Gender" Binding="{Binding Gender.oldValue}" />
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>https://stackoverflow.com/questions/38168242
复制相似问题