Why dont you put your Listview in RowDetailsTemplate of your DataGrid and set the bindings accordingly to populate the listview.
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<ListView Height="161" ItemsSource="{Binding}" Name="lstvwProductCode" VerticalAlignment="Bottom" Width="388">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=Record_Id}" Header="Record ID" Width="0" />
<GridViewColumn DisplayMemberBinding="{Binding Path=Product_Code}" Header="Pcode" Width="110" />
<GridViewColumn DisplayMemberBinding="{Binding Path=Product_Name}" Header="Product" Width="180" />
</GridView>
</ListView.View>
</ListView>
</DataTemplate>
</DataGrid.RowDetailsTemplate>