¿Cómo se vincula a un método de objetos en este escenario en WPF?¿Se relaciona con un método en 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>
Aquí quiero enlazar con el método GetChildren
en cada RootObject
del árbol.
EDITAR unión a un ObjectDataProvider
no parece funcionar porque estoy unirse a una lista de elementos, y los ObjectDataProvider
necesidades, ya sea un método estático, o crea su propio ejemplo y utiliza eso.
Por ejemplo, usando la respuesta de Matt me sale:
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.
Sí, tienes razón. ObjectDataProvider tiene una propiedad ObjectInstance (para llamar a su método en una instancia específica) pero no creo que sea una propiedad de dependencia, por lo que no se puede vincular (AFAIK). –
Sí, traté de vincularme a ObjectInstance y descubrí que no es una propiedad de dependencia. –
Dejaré mi respuesta allí de todos modos, tanto para dar a su actualización un contexto como para ayudar a alguien más que encuentre esta pregunta con un problema lo suficientemente similar. –