Comment liez-vous à une méthode d'objets dans ce scénario dans WPF?
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>
Ici, je veux me lier à la GetChildren
méthode sur chacun RootObject
des arbres.
EDIT La liaison à un ObjectDataProvider
ne semble pas fonctionner parce que je me lie à une liste d'éléments et que les ObjectDataProvider
besoins soit une méthode statique, soit elle crée sa propre instance et l'utilise.
Par exemple, en utilisant la réponse de Matt, j'obtiens:
Erreur System.Windows.Data: 33: ObjectDataProvider ne peut pas créer d'objet; Type = 'objet racine'; Error = 'Mauvais paramètres pour le constructeur.'
Erreur System.Windows.Data: 34: ObjectDataProvider: échec de la tentative d'appel de la méthode sur le type; Méthode = 'GetChildren'; Type = 'objet racine'; Error = 'Le membre spécifié ne peut pas être appelé sur la cible.' TargetException: 'System.Reflection.TargetException: La méthode non statique nécessite une cible.