Probleme beim Binden an den Inhalt einer WPF-DataGridCell in XAML
Ich habe den folgenden Beitrag verwendet, um ein Datagrid zu implementieren, das an eine Liste dynamischer Objekte gebunden ist
DynamicObject mit automatischer Spaltengenerierung an ein DataGrid binden?
Die ITypedList-Methode GetItemProperties funktioniert einwandfrei. Es wird ein Raster mit allen von mir beschriebenen Spalten angezeigt.
Ich verwende einen benutzerdefinierten PropertyDescriptor und überschreibe die GetValue- und SetValue-Methoden wie im obigen Beitrag beschrieben. Außerdem implementiere ich die TryGetMember- und TrySetMember-Methoden in den dynamischen Objekten.
Im Grunde genommen habe ich ein ComplexObject: DynamicCobject mit einem Feldverzeichnis und einer ComplexObjectCollection, die ITypedList und IList implementieren.
Dies alles funktioniert einwandfrei, außer wenn ich die itemsSource des DataGrid an die Auflistung binde, zeigen die Zellen den SimpleObject-Typnamen an und ich möchte tatsächlich eine Vorlage implementieren, um den Eigenschaftswert des SimpleObject in einem Textblock anzuzeigen.
Ich habe alle möglichen Methoden verwendet, um das zugrunde liegende SimpleObject zu ermitteln, aber nichts funktioniert, und ich erhalte immer das ComplexObject für die Zeile. Ich verwende automatisch generierte Spalten und dies scheint immer eine Textspalte zu erzeugen. Dies mag das Problem sein, aber warum kann ich das zugrunde liegende SimpleObject nicht trotzdem von irgendwo in den Zelleigenschaften abrufen?
Unten wäre meine ideale Lösung, aber das funktioniert nicht.
<Grid>
<Grid.Resources>
<DataTemplate x:Key="DefaultNodeTempate">
<ContentControl Content="{Binding RelativeSource={RelativeSource TemplatedParent},
Path=Content}">
<ContentControl.Resources>
<DataTemplate DataType="local:SimpleObjectType">
<TextBlock Text="{Binding Value}" />
</DataTemplate>
</ContentControl.Resources>
</ContentControl>
</DataTemplate>
</Grid.Resources>
<DataGrid ItemsSource="{Binding ElementName=mainWin, Path=DynamicObjects}">
<DataGrid.Resources>
<Style TargetType="DataGridCell">
<Setter Property="ContentTemplate" Value="{StaticResource DefaultNodeTempate}" />
</Style>
</DataGrid.Resources>
</DataGrid>
</Grid>
Anregungen wäre sehr dankbar.
Vielen Dank
Kieran