在这种情况下,如何在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>
在这里,我想绑定到每棵树上的GetChildren
方法RootObject
。
EDIT绑定到ObjectDataProvider
似乎无效,因为我正在绑定到项目列表,并且ObjectDataProvider
需要静态方法,或者它创建了自己的实例并使用该实例。
例如,使用马特的答案,我得到:
System.Windows.Data错误:33:ObjectDataProvider无法创建对象。Type ='RootObject'; 错误=“构造函数的参数错误。”
System.Windows.Data错误:34:ObjectDataProvider:尝试在类型上调用方法失败;方法='GetChildren'; Type ='RootObject'; 错误='无法在目标上调用指定的成员。TargetException:'System.Reflection.TargetException:非静态方法需要一个目标。