ciao,
secondo me i 3 campi di Class1 li bindi normalmente su 3 colonne normali del datagird, la quarta colonna la fai templateColum e ci metti una usercontrol con un'altro datagrid
poi alla usercontrol gli passi la la 4° proprietà di class1.
Al momento non ho visualstudio su questo computer non ricordo esattamente la sintassi dello xamal.
<datagrid itemssource="{Binding Source}"......>
<DatagridTextColum Binding="{Source.Proprieta1}" header"P1">
<DatagridTextColum Binding="{Source.Proprieta1}" header"P1">
<DatagridTextColum Binding="{Source.Proprieta1}" header"P1">
<datagirdTemplateColum>
<DataTemplate>
<MyControl:Class2UserControl Class2="{Binding}">
</DataTemplate>
</DatagridTemplateColum>
</DataGrid>
la user control avrà un'altro datagrid con 3 normali textcolum che bindano alla collezzione che gli viene passata. Ovviamente devi mettergli una DependcyPropery Class2 che usi per passargli Class11.objClass2
UserControl Class2UserControl
<datagrid itemssource="{Binding Class1Source}" ...>
<datagridTextColum binding="{Claass1Source.property1"}>
<datagridTextColum binding="{Claass1Source.property2"}>
<datagridTextColum binding="{Claass1Source.property3"}>
</datagrid>
Class1Source è una observableCollection<Class2> che valorizzi con una dependecy properties.