Bagaimana Anda mengikat metode objek dalam skenario ini di 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>
Di sini saya ingin mengikat GetChildrenmetode pada masing RootObject- masing pohon.
EDIT Binding ke an ObjectDataProvidertampaknya tidak berfungsi karena saya mengikat daftar item, dan ObjectDataProvidermemerlukan metode statis, atau membuat instance sendiri dan menggunakannya.
Misalnya, menggunakan jawaban Matt saya mendapatkan:
Kesalahan System.Windows.Data: 33: ObjectDataProvider tidak dapat membuat objek; Ketik = 'RootObject'; Kesalahan = 'Parameter salah untuk konstruktor.'
Kesalahan System.Windows.Data: 34: ObjectDataProvider: Kegagalan mencoba memanggil metode pada tipe; Metode = 'GetChildren'; Ketik = 'RootObject'; Error = 'Anggota yang ditentukan tidak dapat dipanggil pada target.' TargetException: 'System.Reflection.TargetException: Metode non-statis memerlukan target.