Jak utworzyć powiązanie z metodą obiektów w tym scenariuszu w 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>
Tutaj chcę powiązać się z GetChildren
metodą na każdym RootObject
drzewie.
EDYCJAObjectDataProvider
Wydaje się, że powiązanie z elementem an nie działa, ponieważ wiążę się z listą elementów i ObjectDataProvider
potrzebuje albo statycznej metody, albo tworzy własną instancję i używa jej.
Na przykład, używając odpowiedzi Matta, otrzymuję:
Błąd System.Windows.Data: 33: ObjectDataProvider nie może utworzyć obiektu; Type = 'RootObject'; Błąd = „Nieprawidłowe parametry konstruktora”.
Błąd System.Windows.Data: 34: ObjectDataProvider: Błąd podczas próby wywołania metody dla typu; Method = 'GetChildren'; Type = 'RootObject'; Error = „Określony członek nie może zostać wywołany w miejscu docelowym.” TargetException: „System.Reflection.TargetException: metoda niestatyczna wymaga celu.