Comment vous lier à une méthode d'objets dans ce scénario dans WPF?Lier à une méthode 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 lier à la méthode GetChildren
sur chaque RootObject
de l'arbre.
EDIT à une liaison ObjectDataProvider
ne semble pas fonctionner parce que je suis lier à une liste d'articles, et les besoins ObjectDataProvider
soit une méthode statique, ou il crée son propre exemple et l'utilise.
Par exemple, en utilisant la réponse de Matt Je reçois:
System.Windows.Data Error: 33 : ObjectDataProvider cannot create object; Type='RootObject'; Error='Wrong parameters for constructor.'
System.Windows.Data Error: 34 : ObjectDataProvider: Failure trying to invoke method on type; Method='GetChildren'; Type='RootObject'; Error='The specified member cannot be invoked on target.' TargetException:'System.Reflection.TargetException: Non-static method requires a target.
Oui, vous avez raison. ObjectDataProvider possède une propriété ObjectInstance (pour appeler sa méthode sur une instance spécifique) mais je ne pense pas qu'il s'agisse d'une propriété de dépendance, donc vous ne pouvez pas lier ce paramètre (AFAIK). –
Ouais j'ai essayé de lier à ObjectInstance et j'ai découvert qu'il ne s'agissait pas d'une propriété de dépendance. –
Je vais laisser ma réponse de toute façon, à la fois pour donner un peu de contexte à votre mise à jour et pour aider quelqu'un d'autre qui trouve cette question avec un problème assez similaire. –