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 GetChildren
metode pada masing RootObject
- masing pohon.
EDIT Binding ke an ObjectDataProvider
tampaknya tidak berfungsi karena saya mengikat daftar item, dan ObjectDataProvider
memerlukan 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.