Wie binden Sie in diesem Szenario in WPF an eine Objektmethode?
public class RootObject
{
public string Name { get; }
public ObservableCollection<ChildObject> GetChildren() {...}
}
public class ChildObject
{
public string Name { get; }
}
XAML:
<TreeView ItemsSource="some list of RootObjects">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type data:RootObject}"
ItemsSource="???">
<TextBlock Text="{Binding Path=Name}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type data:ChildObject}">
<TextBlock Text="{Binding Path=Name}" />
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
Hier möchte ich an die GetChildren
Methode in jedem RootObject
Baum binden .
BEARBEITEN Die Bindung an eine ObjectDataProvider
scheint nicht zu funktionieren, da ich an eine Liste von Elementen binde und ObjectDataProvider
entweder eine statische Methode benötige oder eine eigene Instanz erstellt und diese verwendet.
Wenn ich zum Beispiel Matts Antwort verwende, bekomme ich:
System.Windows.Data-Fehler: 33: ObjectDataProvider kann kein Objekt erstellen. Type = 'RootObject'; Fehler = 'Falsche Parameter für Konstruktor.'
System.Windows.Data-Fehler: 34: ObjectDataProvider: Fehler beim Aufrufen der Methode für den Typ; Methode = 'GetChildren'; Type = 'RootObject'; Fehler = 'Das angegebene Mitglied kann nicht auf dem Ziel aufgerufen werden.' TargetException: 'System.Reflection.TargetException: Für eine nicht statische Methode ist ein Ziel erforderlich.