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
트리 의 메서드에 바인딩하고 싶습니다 .
ObjectDataProvider
항목 목록에 바인딩하기 때문에 EDIT Binding이 작동하지 않는 것 같습니다 ObjectDataProvider
. 정적 메서드 가 필요하거나 자체 인스턴스를 만들고 사용합니다.
예를 들어 Matt의 대답을 사용하면 다음과 같은 결과를 얻습니다.
System.Windows.Data 오류 : 33 : ObjectDataProvider가 개체를 만들 수 없습니다. Type = 'RootObject'; Error = '잘못된 생성자 매개 변수.'
System.Windows.Data 오류 : 34 : ObjectDataProvider : 형식에서 메서드를 호출하는 데 실패했습니다. Method = 'GetChildren'; Type = 'RootObject'; 오류 = '지정된 구성원은 대상에서 호출 할 수 없습니다.' TargetException : 'System.Reflection.TargetException : 비 정적 메서드에는 대상이 필요합니다.