在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
方法。
编辑绑定到ObjectDataProvider
似乎行不通,因为我绑定到了一个项目列表,而ObjectDataProvider
需要一个静态方法,或者它创建自己的实例并使用它。
例如,使用Matt的答案,我得到:
System.Windows.Data Error: 33 : ObjectDataProvider无法创建对象;Type='RootObject';Error='Wrong parameters for constructor.'
System.Windows.Data Error: 34 : ObjectDataProvider:尝试在类型上调用方法失败;Method='GetChildren';Type='RootObject';Error='The specified member cannot be invoked on target.' TargetException:'System.Reflection.TargetException: Non-static method requires a target.