在这个场景中,如何在 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>
这里我想绑定到树的每个 RootObject
上的 GetChildren
方法。
EDIT 绑定到 ObjectDataProvider
似乎不起作用,因为我绑定到一个项目列表,而 ObjectDataProvider
需要一个静态方法,或者它创建自己的实例并使用该方法。
例如,使用马特的答案,我得到:
数据错误: 33: ObjectDataProvider 不能创建对象; Type = ‘ RootObject’; Error = ‘构造函数的错误参数’
系统。窗户。数据错误: 34: ObjectDataProvider: 尝试在类型上调用方法失败; Method = ‘ GetChildren’; Type = ‘ RootObject’; Error = ‘指定的成员不能在目标上调用。TargetException: 系统。反射。TargetException: 非静态方法需要一个目标。