WPF에서이 시나리오의 개체 메서드에 어떻게 바인딩합니까?WPF에서 메서드에 바인딩할까요?
public class RootObject
{
public string Name { get; }
public ObservableCollection<ChildObject> GetChildren() {...}
}
public class ChildObject
{
public string Name { get; }
}
XAML :
나는 트리의 각RootObject
에
GetChildren
방법에 바인딩 할 다음
<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>
. ObjectDataProvider
바인딩
편집은 내가 항목의 목록과 ObjectDataProvider
요구하거나 정적 메서드에 바인딩하고 있습니다 때문에 작동하지 않는 것, 또는 그것이 자신의 인스턴스의 그 사용 만듭니다. 매트의 답변을 사용하여 예를 들어
, 내가 얻을 :
System.Windows.Data Error: 33 : ObjectDataProvider cannot create object; Type='RootObject'; Error='Wrong parameters for constructor.'
System.Windows.Data Error: 34 : ObjectDataProvider: Failure trying to invoke method on type; Method='GetChildren'; Type='RootObject'; Error='The specified member cannot be invoked on target.' TargetException:'System.Reflection.TargetException: Non-static method requires a target.
네 말이 맞아. ObjectDataProvider는 특정 인스턴스에서 메서드를 호출하는 ObjectInstance 속성을 가지고 있지만 종속성 속성이라고 생각하지 않으므로 바인딩 할 수 없습니다 (AFAIK). –
그래, ObjectInstance에 바인딩하려고했는데 그것이 의존성 속성이 아니라는 것을 알았습니다. –
나는 어쨌든 거기에 내 대답을 남겨 둘 것입니다, 당신의 업데이트 내용을 알려주고 비슷한 문제를 가진이 질문을 찾는 다른 누군가를 도울 것입니다. –